【发布时间】:2016-06-11 22:03:17
【问题描述】:
假设我有一个 hasMany 关系 Procedure => hasMany Steps,带有 async:true,并且我有一个名为 procedure-main 的过程组件(在过程路由上),它列出了如下步骤:
{{#each steps as |step| }}
{{step.title}}
{{/each}}
我需要观察每个步骤的属性(例如,stepStatus),以更改任何步骤的 stepStatus。在 Ember 1.7 中,我在过程控制器上有这样的东西:
stepsStatusObserver: function(){
...
}.observes('steps.@each.stepStatus')
这是在任何步骤上的 stepStatus 更改时触发的,并且每当状态更改时,我在此函数中所拥有的任何内容都会被触发。但是,在 Ember 2.3 中,我无法实现这一点。我试过了
stepsStatusObserver: Ember.observer('steps.[].stepStatus', function(){
...
})
但这只会在页面上列出步骤时触发一次。当我将一个步骤的状态更改为新值时,该函数永远不会被触发。
如何在 Ember 2.3 中复制此功能?
注意:在我的用例中,我不能依靠单击按钮手动设置观察者内部的功能,因为如果 stepStatus 属性在任何步骤发生更改,它必须自动触发。
【问题讨论】:
-
也有可能你的范围是错误的,在你的模板中你使用了
procedure.steps,尽管在你的计算属性中你引用了steps。没有更多信息,这只是猜测。 -
无论如何,
steps.[].stepStatus不是一个有效的语法。 -
我对错字表示歉意:它的步骤为 |step|在我的 .hbs 上,我在问题中打错了字。它已在编辑中修复。
标签: ember.js ember.js-2