Ember观察嵌套数组属性

时间:2014-11-27 16:45:31

标签: ember.js

我想观察一个嵌套属性。我有以下Ember数组:

specifications: [
  {
    title: "specification name",
    filters: [
      {
        title: "example"
        checked: false
      },
      {
        title: "example 2",
        checked: true
      }
    ]
  },
  ...
]   

我想创建一个计算属性:

activeFilters: (->
  Ember.computed.filterBy('specifications.@each.filters', 'checked', true),
).property('specifications.@each.filters')

活动过滤器属性不起作用,我尝试了几种属性方法的组合,但都没有工作。

我试图创建的属性是否真的可能?

1 个答案:

答案 0 :(得分:0)

是的,有可能。问题是,要使它工作,您无法使用JavaScript数组,需要Ember.ArrayProxy,然后您可以访问其特殊属性:http://emberjs.com/api/classes/Ember.ArrayProxy.html

specifications: Ember.ArrayProxy.create({
  content: [
    {
      title: "specification name",
    },
  ]
});

所以,你会有类似的东西:

oneSpecChangedCheck: function() {
  // don't know which, but someone changed
  var s = this.get('specs');
  // loop and process
  return s;
}.property('specs.@each.checked'),

http://emberjs.jsbin.com/zohuzo/2/edit?html,js,console,output