如何在Ember.js中引用模型?

时间:2014-10-10 12:30:48

标签: ember.js

我正在研究DoMVC并在下面的代码中,只是不太了解thisvar model = this.get('model');引用的内容。

是否引用ControllerRoute。如果是Controller,那么我们在哪里声明Model x works with Controller y

Todos.TodoController = Ember.ObjectController.extend({
  isCompleted: function(key, value){
    var model = this.get('model');
    ...
  }.property('model.isCompleted')
});

1 个答案:

答案 0 :(得分:2)

我。 this函数中的Ember.Object变量通常是指Ember.Object的实例(在您的情况下为Todos.TodoController的实例)

示例:

App.SomeRoute = Em.Route.extend({
    activate: function() {
        this; // this is App.SomeRoute instance ref.
    }
});

App.SomeController = Em.Controller.extend({
    someMethod: function() {
        this; // this is App.SomeController instance ref.
    }
});

App.SomeView = Em.View.extend({
    someMethod: function() {
        this; // this is App.SomeView instance ref.
    }
});

等等。

II。 this.get('model')只是控制器的属性(如果需要,可以为该属性设置任何值)。 *在ember v1.7之前modelEmber.computed.alias到控制器的名为content的属性,但在最新的ember版本中此行为was changed。< / p>

model中有另一个Em.Route属性,它与Em.ObjectController.model属性不同。实际上,它是在路由(转换)序列中调用的函数,它返回数据,Em.Route用于在controller.model的{​​{3}}挂钩中设置Em.Route属性。因此,this.get('model')方法中Em.Route的输出将是一个函数。

P.S。我尽量不搞扯时态,但很可能我没有成功。:)我很抱歉。