2014-10-10 60 views
0

我正在通过toDoMVC和下面的代码,只是不太明白什么thisvar model = this.get('model');如何在Ember.js中引用模型?

它是指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') 
}); 

回答

2

I.一般内部Ember.Object功能this变量指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. 
    } 
}); 

等。

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

还有另一model财产,在Em.Route,它不同于Em.ObjectController.model财产。实际上,这是一个在路由(转换)序列中调用的函数,它返回数据,Em.Route用于设置controller.model属性setupController钩子Em.Route。所以,在Em.Route的方法里面this.get('model')的输出将是一个函数。

P.S.我尽量不要用时态搞砸,但最有可能的是我没有成功。:)对不起。

相关问题