Dar*_*han 1 ember.js ember.js-2
假设我有一个hasMany关系Procedure => hasMany Steps,async:true,我有一个名为procedure-main的Procedure Component(在程序路径上),它列出了这些步骤:
{{#each steps as |step| }}
{{step.title}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
我需要在任何步骤上更改stepStatus时观察每个步骤(例如,stepStatus)的属性.在Ember 1.7中,我在程序控制器上有这样的东西:
stepsStatusObserver: function(){
...
}.observes('steps.@each.stepStatus')
Run Code Online (Sandbox Code Playgroud)
这是在步骤中的任何步骤上更改stepStatus时触发的,并且只要状态发生更改,我在此函数中的任何内容都会被触发.但是,在Ember 2.3中,我无法实现这一点.我试过了
stepsStatusObserver: Ember.observer('steps.[].stepStatus', function(){
...
})
Run Code Online (Sandbox Code Playgroud)
但这只会在页面上列出步骤时触发一次.当我将一个步骤的状态更改为新值时,该函数永远不会被触发.
如何在Ember 2.3中复制此功能?
注意:在我的用例中,我不能依赖于在单击按钮时手动设置观察者内部的功能,因为如果在任何步骤中更改了stepStatus属性,它必须自动触发.
mig*_*ain 15
问题是它steps.[].stepStatus不再是有效的依赖键.你应该替换它steps.@each.stepStatus.
以下是当前Ember版本中有效和无效依赖键的摘要:
array- 如果数组引用本身发生更改,则会观察到,例如,用其他值或数组替换整个数组oldValue !== newValue.array.[]- 当数组本身发生变化时(上图)和数组长度发生变化(功能相当于array.length)时,这都会观察到array.@each.property- 观察上面的两种情况以及property某些数组的项目何时发生变化array.@each.{prop,anotherProp} - 您还可以在仅指定一个键的同时观察多个属性.这扩展到array.@each.prop和array.@each.anotherProp.array.@each- 不再有效,没有尾随@each.请.[]改用.array.@each.property.property - 也无效.请注意,@each只能深入一级.您不能使用像todos.@each.owner.name或的嵌套表单todos.@each.owner.@each.name.array.[].property - 不再有效.请改用@each表格.| 归档时间: |
|
| 查看次数: |
1067 次 |
| 最近记录: |