如何用Ember.Controller替换Ember.ObjectController

时间:2015-04-02 18:49:13

标签: ember.js

我目前正在处理的应用程序使用Ember.ArrayController加载了几个place模型。为了获得不同模型类型的不同行为,我使用了lookupItemController,如下所示:

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

获得相同的行为

1 个答案:

答案 0 :(得分: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'),
    //...
});