2015-04-02 55 views
0

我目前正在使用的应用程序使用Ember.ArrayController加载一对place模型。为了获得不同的行为不同的模型类型我用了lookupItemController这样的:如何用Ember.Controller替换Ember.ObjectController

PlacesController

lookupItemController: function(object) { 
    if(object.get('isNew')) { 
    return "places.new"; 
    } else { 
    return "places.index"; 
    } 
} 

PlacesNewController

needs: ['places'] 

isDraggable: Ember.computed.alias('isCloseEnough') 

isCloseEnough: false 
isZoomMax: false 
isMarkerAdded: false 

... 

PlacesIndexController

needs: 'places', 
isDraggable: false, 
modelBinding: 'places.model' 

... 

但现在Ember.ObjectController已弃用。我的问题是:我如何使用Ember.Controller获得相同的行为?

回答

0

你会完全像以前一样使用它们。唯一的区别是您将无法代理模型的属性。

所以,如果你曾经有过{{a.b.c}}把手伸进你的model.a.b.c通过控制器,现在你需要做以下之一:

1)在你的模板更改为{{model.a.b.c}}

2财产查找路径)在您的控制器(以前称为ObjectController)中,添加如下内容:

App.MyController = Ember.Controller.extend({ 
    a: Ember.computed.alias('model.a'), 
    //... 
});