【发布时间】:2014-06-10 13:03:58
【问题描述】:
对于检测模型变化的控制器和组件,我感到困惑并正在修复中。根据Ember Official Documentation——
"默认情况下,从你的模型钩子返回的值将被分配给关联控制器的模型属性。例如,如果你的 App.PostsRoute 从它的模型钩子返回一个对象,该对象将被设置为模型App.PostsController 的属性。”
因此,当模型在路由中发生变化时控制器是否应该更新,或者通过外部函数异步更新?
App.IndexRoute = Ember.Route.extend({
model: function(){
App.set('localStore', this.get('store'));
App.localStore.createRecord('stats', {'name': 'cde'});
return this.store.find("stats");
}
});
App.IndexController = Ember.Controller.extend({
modelObs: function() {
// Never triggered!
console.log("CONTROLLER: model updated!");
}.property('model')
});
// Component with the controller's model property passed to it as localModel
// in the template
App.NewCompComponent = Ember.Component.extend({
localModel: null,
modelObs: function() {
console.log("COMPONENT: Model updated!");
}.property('localModel')
这是一个说明问题的 Jsbin - http://jsbin.com/tavis/3/edit
有什么我可能做错了吗?如何让组件检测到来自控制器的传递模型的变化,以及如何让控制器检测到路由模型的变化?也许我错过了一两件事——感谢指点!谢谢
【问题讨论】:
标签: javascript ember.js controller components models