2015-07-04 127 views
0

得到改变数值,以下是部分:观察阵列和ember.js

export default Ember.Component.extend({ 
    columns: [] 

    _watchColumns: function() { 
     // console.log(changedValue); 
    }.observes('[email protected]') 

    // other code 
}); 

我想_watchColumns方法来获得改变的值。可能吗?

+0

也许_watchColums:函数(newVal)将返回新的值?这在Angular中是这样的,对于Ember不知道。 – Chrillewoodz

+0

是的,那对我来说是期望的行为,但它并不像那样工作。 –

+0

尝试阅读文档,但它并没有真正解释任何关于它的事情。 – Chrillewoodz

回答

1

我不认为这是可能的。解决方法可能是为每个项目使用一个组件。

MY-列分量

//my-columns.js 
export default Ember.Component.extend({ 
    columns: null 
}); 

//my-columns.hbs 
{{#each columns as |column|}} 
    {{my-column value=column}} 
{{/each}} 

MY-列分量

//my-column.js 
export default Ember.Component.extend({ 
    nameUpdated : Ember.computed('value.name', function() { 
     console.log(this.get('value.name')); 
    }); 
}); 

另一个提示:从未在的分量的属性设置为[]{}因为它会被共享跨越compoent的所有实例(像一个静态属性 - 除非你想要这个行为当然)。在你的情况下,用户将通过传递自己的列对象来覆盖它,但无论如何它都是有帮助的。如果你需要在你的组件中的数组,你可以这样做:

export default Ember.Component.extend({ 
    myArray : null, 
    init : function() { 
     this._super.apply(this, arguments); 
     this.set('myArray', []); 
    } 
}); 
+0

投票赞成提示:)。 –