Ember模型和组件,获取组件来检测模型中的更改
Ember Model and Component, getting components to detect changes in models
我对检测模型变化的控制器和组件感到困惑和困惑。根据Ember官方文件——
默认情况下,从模型挂钩返回的值将被分配给关联控制器的模型属性。例如,如果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
我可能做错了什么吗?如何让组件检测来自控制器的传递模型的变化,以及类似地,如何让控制器检测路线模型的变化?也许我错过了一两件事——感谢你的指点!感谢
除非使用计算属性,否则不会对其求值。他们被懒散地评价。
使用这些属性中的任何一个都将导致对它们进行评估,并生成日志。
http://jsbin.com/suheroya/1/edit
此外,重要的是要知道模型本身没有改变,这样计算的属性就不会被反复调用。模型上的属性正在更改,如果您希望反复调用计算的属性,则需要监视这些属性。
相关文章:
- Ember.js:未在组件'中渲染的模型的计算属性;关于变更的参考
- 使用AMD时未定义淘汰组件视图模型
- 可以将模型传播到组件,但不能传播到sap.ui.jsfragment
- 如何在角度 2 中向动态加载的子组件提供父组件的模型
- Aurelia组件在其他视图模型中使用时不共享实例
- 挖空绑定自定义组件,使其不与中心视图模型冲突
- 从包含的视图模型访问组件视图模型
- 获取到组件的异步视图模型
- 当通过require.js加载所有内容时,如何将挖空视图模型的一部分传递给组件
- 视图模型到模板的组件绑定
- 如何获取模型内部的组件引用保存回调函数
- 在组件中动态绑定数据到值模型
- 从typescript模块中注册Knockout.js组件视图模型
- 使用没有视图模型. js文件的knockout组件
- 将现有模型传递给淘汰组件绑定
- React + Flux——将输入绑定到单个“模型”的嵌套组件
- 模型绑定到自定义组件- Asp.net Mvc
- Ember.js-如何在更多路线之间共享路线模型数据?-为什么不在组件中加载数据
- 从React组件更新模型/集合
- 如何在编辑HTML的Javascript组件中实现视图-模型分离?