Cómo manipular un elemento de lista desde su vista en emberjs

Tengo una aplicación Ember con una vista y un controlador:

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

Quiero marcar el elemento actual en el que el usuario hace clic como leído, cambiando su modelo relacionado. Actualmente puedo hacerlo calculando el índice de la vista del elemento, pero el problema es que no puedo estar seguro de que el índice de la vista sea el mismo que el índice de su controlador. ¿Alguna idea?

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);
        }
    })
});​

preguntado el 22 de mayo de 12 a las 21:05

1 Respuestas

Dentro de su click controlador puede obtener la referencia al elemento de matriz para el que se representa la vista a través de this.get('content'). Para que pueda establecer la bandera a través de this.setPath('content.unread', false), consulte nuestra página, 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);
    }
})

contestado el 22 de mayo de 12 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.