无法观察Ember.js中的对象数组

Unable to observe an array of objects in Ember.js?

本文关键字:对象 数组 js 观察 Ember      更新时间:2023-09-26

我在一个组件中有一个对象数组,如下所示:

checkboxes: [
    {
        label: 'A',
        state: false
    },
    {
        label: 'B',
        state: false
    },
    {
        label: 'C',
        state: false
    }
]

在我的Handlebars模板中,我有一个循环来显示复选框列表,每个复选框状态都映射回数组项,如下所示:

{{#each checkboxes as |item|}}
    <li><input type="checkbox" checked={{item.state}}> {{item.label}}</li>
{{/each}}

我写了一个观察者来观察数组的变化,但它似乎不起作用:

observeCheckboxes: function() {
    console.log(this.get('checkboxes').toArray());
}.observes('checkboxes.[]')

如何观察复选框状态的更改,以便获得选中项目的列表?

更改观察者以观察checkboxes.@each.state

请查看此处的文档以获得完整的概述。

如果可能的话,尽量避免使用观察者,而是使用计算属性,然后将计算属性和观察者定义为Ember.computed&Ember.observer。

这里有一个小笑话,说明为什么你的观察者没有开火。