1

我有一个带有视图和控制器的 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);
        }
    })
});​
4

1 回答 1

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);
    }
})
于 2012-05-22T20:41:04.057 回答