这是组件:
export default Ember.Component.extend({
columns: []
_watchColumns: function () {
// console.log(changedValue);
}.observes('columns.@each.name')
// other code
});
我想在_watchColumns
方法中获取更改后的值。有可能吗?
答案 0 :(得分:1)
我不认为这是可能的。解决方法可能是为每个项目使用一个组件。
My-Columns组件
//my-columns.js
export default Ember.Component.extend({
columns: null
});
//my-columns.hbs
{{#each columns as |column|}}
{{my-column value=column}}
{{/each}}
My-Column组件
//my-column.js
export default Ember.Component.extend({
nameUpdated : Ember.computed('value.name', function() {
console.log(this.get('value.name'));
});
});
另一个提示:从未在组件中将属性设置为[]
或{}
,因为它将在组件的所有实例中共享(如静态属性 - 除非你当然希望这种行为)。在您的情况下,用户将通过传入他们自己的列对象来覆盖它,但无论如何知道它是有帮助的。如果组件中需要数组,则可以执行以下操作:
export default Ember.Component.extend({
myArray : null,
init : function() {
this._super.apply(this, arguments);
this.set('myArray', []);
}
});