2014-10-10 27 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.我儘量不要用時態搞砸,但最有可能的是我沒有成功。:)對不起。

相關問題