我很困惑并且在修复模型中检测到变化的控制器和组件方面。根据{{3}} -
“默认情况下,模型钩子返回的值将被分配给关联控制器的model属性。例如,如果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 - Ember Official Documentation
有什么我可能做错了吗?如何让组件检测来自控制器的传递模型的变化,类似地如何让控制器检测路径模型的变化?也许我错过了一两件事 - 指点值得赞赏!感谢
答案 0 :(得分:1)
除非使用计算属性,否则不会评估计算属性。他们被懒惰地评估了。
使用这些属性中的任何一个都会导致对它们进行评估,并且会发生日志。
http://jsbin.com/suheroya/1/edit
此外,重要的是要知道模型本身没有改变,因此不会反复调用计算属性。模型上的属性正在发生变化,如果您想要反复调用计算属性,则需要观察这些属性。