Ember.js ArrayController挂钩到CollectionView:如何更新'content'数组中的对象属性?

时间:2012-12-07 17:47:17

标签: controller ember.js collectionview

在这里加入新星。将ArrayController挂钩到CollectionView。

// the ArrayController
App.Entities = Ember.ArrayController.create({
    content: Ember.A([
            {id: 1, name: "item 1"},
            {id: 2, name: "item 2"},
            ...
            {id: n, name: "item n"}
        ])
});

// the CollectionView
myView = Ember.CollectionView.create(
    contentBinding: "App.Entities",
    tagName: 'ul',
    itemViewClass: Ember.View.extend({
        template: Ember.Handlebars.compile('{{view.content.name}}')
    })
).appendTo("mySelector");

正如预期的那样,我的属性会创建一个不错的ul。 同样,所有阵列级操作(如弹出,推动和反转)都非常有效:

App.Entities.reverseObjects(); // Works!
App.Entities.popObject(); // Works!

但是,我似乎无法在数组中更新属性

App.Entities.objectAtContent(0).name = "new name" // I know this is wrong

有趣的是,如果我之后执行数组操作,它会起作用:

App.Entities.reverseObjects(); // change is picked up!

所以问题:如何更新属性INSIDE一个ArrayController(并确保更新绑定?)

顺便说一下,我已经尝试了所有我能想到的东西......比如myView.rerender()等,但我知道我只是做错了,因为它违背了应该工作。

1 个答案:

答案 0 :(得分:2)

尝试App.Entities.objectAt(0).set('name', "New name")并让我知道这是否有效......数组必须包含Ember对象才能使绑定适用于所做的更改