Javascript 余烬模型和组件,获取组件以检测模型中的更改
我对检测模型变化的控制器和组件感到困惑和困惑。根据—— 默认情况下,从模型挂钩返回的值将分配给关联控制器的模型属性。例如,如果App.PostsRoute从其模型挂钩返回对象,则该对象将被设置为App.PostsController的模型属性 因此,当模型在路由中或通过外部函数异步更改时,控制器不应该更新吗Javascript 余烬模型和组件,获取组件以检测模型中的更改,javascript,ember.js,controller,components,models,Javascript,Ember.js,Controller,Components,Models,我对检测模型变化的控制器和组件感到困惑和困惑。根据—— 默认情况下,从模型挂钩返回的值将分配给关联控制器的模型属性。例如,如果App.PostsRoute从其模型挂钩返回对象,则该对象将被设置为App.PostsController的模型属性 因此,当模型在路由中或通过外部函数异步更改时,控制器不应该更新吗 App.IndexRoute = Ember.Route.extend({ model: function(){ App.set('localStore', this.get
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,它说明了问题-
有什么我可能做错的吗?如何让组件从控制器检测到传递模型中的更改,以及类似地,如何让控制器检测到路由模型中的更改?也许我遗漏了一两件事——感谢指点!谢谢,除非使用计算属性,否则不会对其进行评估。他们被懒散地评估 使用这些属性中的任何一个都将导致对它们进行评估,并生成日志 此外,重要的是要知道模型本身没有改变,这样计算属性就不会被反复调用。模型上的属性正在更改,如果希望反复调用计算属性,则需要查看这些属性