我正在研究DoMVC并在下面的代码中,只是不太了解this
中var model = this.get('model');
引用的内容。
是否引用Controller
或Route
。如果是Controller
,那么我们在哪里声明Model x works with Controller y
?
Todos.TodoController = Ember.ObjectController.extend({
isCompleted: function(key, value){
var model = this.get('model');
...
}.property('model.isCompleted')
});
答案 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之前model
是Ember.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。我尽量不搞扯时态,但很可能我没有成功。:)我很抱歉。