0

Emebrjs コレクションを反復処理したい - ユーザーが次にクリックするたびに、次の項目が選択され、そのプロパティが変更されます。

外部からリスト ビュー アイテムを反復するにはどうすればよいですか? 見る -

http://jsfiddle.net/gavriguy/NHxJ4/

var App = Em.Application.create({
    ready: function() {

        App.someItemsView.appendTo('body');
        this._super();
    }
});

App.tempController = Em.ArrayController.create({
    self: this,
    foo: {title:'tt'},
    content: [
        {
        title: 'A',
        unread: true},
    {
        title: 'B',
        unread: false},
    {
        title: 'C',
        unread: false}
    ],
    init: function() {},

    highlightNext: function() {

        var currentItem = this.content.filterProperty('unread', false)[0];
        //How to change the current item's unread to true???

    }


});

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) {

            this.setPath('content.unread', false);
        }
    }),


});​
4

1 に答える 1

1

App.tempController.content配列内の項目は でEmber.Objectはないため、使用できませんcontent.set('unread', false)Ember.setPathEmber オブジェクト以外のプロパティを変更する場合は、関数を使用できます。http://jsfiddle.net/pangratz666/7RLDr/を参照してください。

highlightNext: function() {
    // get all unread items
    var unreadItems = this.content.filterProperty('unread', true);
    // get the first object
    var nextUnreadItem = unreadItems.get('firstObject');
    // check if there is a object at all
    if (nextUnreadItem) {
        // finally set the property
        Ember.setPath(nextUnreadItem, 'unread', false);
    }
}
于 2012-05-23T12:11:25.630 に答える