如何更改数组中的任何项目时如何更新Ember计算属性?

Joh*_*zen 1 javascript ember.js

假设我有以下数据:

[
  { id: "54101", name: "A\1" },
  { id: "cbbb4", name: "A\2" },
  { id: "b4e37", name: "B\1" },
  { id: "ff099", name: "B\2" },
  { id: "8715f", name: "B\3" },
  { id: "1f414", name: "C\1\a" },
  { id: "77ba6", name: "C\1\b" }
]
Run Code Online (Sandbox Code Playgroud)

通过我的路线承诺加载.

我希望有一个属性,称为rootNode具有这种结构的属性:(
我已经有了使用POJO执行此操作的代码,因此可以忽略转换此对象所需的逻辑)

{
  name: null,
  value: null,
  children: [
    {
      name: "A",
      value: null,
      children: [
        { name: "1", value: /* object above */, children: [] },
        { name: "2", value: /* object above */, children: [] }
      ]
    },
    {
      name: "B",
      value: null,
      children: [
        { name: "1", value: /* object above */, children: [] },
        { name: "2", value: /* object above */, children: [] },
        { name: "3", value: /* object above */, children: [] }
      ]
    },
    {
      name: "C",
      value: null,
      children: [
        {
          name: "1",
          value: null,
          children: [
            { name: "a", value: /* object above */, children: [] },
            { name: "b", value: /* object above */, children: [] }
          ]
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

使用Ember,是否可以创建一个计算属性,只要任何名称发生更改,或者添加或删除项目,都会更新此树?

我现在已经使用Ember 18个小时了,而且我有点迷失了.我已经使用Angular的$watch功能实现了这个功能,但由于其他方面的限制,我不得不离开Angular.

Rob*_*son 5

你会用@each:

Ember.computed('myArrayProp.@each.somePropToObserve', function() {
  /* your code here */
})
Run Code Online (Sandbox Code Playgroud)