观察数组并在ember.js中获取更改的值

时间:2015-07-04 10:28:18

标签: javascript ember.js

这是组件:

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

    _watchColumns: function () {
        // console.log(changedValue);
    }.observes('columns.@each.name')

    // other code
});

我想在_watchColumns方法中获取更改后的值。有可能吗?

1 个答案:

答案 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', []);
    }
});