如何在emberjs中操作它的视图中的列表项

时间:2012-05-22 20:24:12

标签: ember.js

我有一个带有视图和控制器的Ember应用程序:

http://jsfiddle.net/gavriguy/EDr4G/

我想通过更改相关模型来标记用户点击的当前项目。 我现在能够通过计算项目的视图索引来做到这一点 - 但问题是我无法确定视图上的索引是否与其控制器上的索引相同。 有什么想法吗?

的JavaScript

App.tempController = Em.ArrayController.create({
    content: [
        {
        title: 'A',
        unread: true},
    {
        title: 'B',
        unread: true},
    {
        title: 'C',
        unread: false}
    ]
});

App.someItemsView = Ember.CollectionView.create({
    contentBinding: 'App.tempController.content',
    itemViewClass: Ember.View.extend({
        template: Ember.Handlebars.compile('<div>{{content.title}} unread: {{content.unread}}</div>'),
        click: function(event) {
            //How to mark current clicked item as read?
            console.log(this.content);
            console.log(event);
            this.set('content.unread', false);
        }
    })
});​

1 个答案:

答案 0 :(得分:2)

click处理程序中,您可以通过this.get('content')获取对其呈现视图的数组项的引用。因此,您可以通过this.setPath('content.unread', false)设置标记,请参阅http://jsfiddle.net/pangratz666/t6Nst/

itemViewClass: Ember.View.extend({
    template: Ember.Handlebars.compile('<div>{{content.title}} unread: {{content.unread}}</div>'),
    click: function(event) {
        // this.content is the item in the array on which this click event occures.
        this.setPath('content.unread', false);
    }
})