Обновить элемент из списка шириной Backbone.js - PullRequest
0 голосов
/ 11 августа 2011

Я начал использовать Backbone.js, и у меня возникла проблема с обновлением HTML-элементов.Это мой код:

Маршрутизатор:

App.Routers.Test = Backbone.Router.extend({  

    routes: {  
        "/start" :      "start",
        "/modify" :     "modify"
    }, 

    start: function() {  

        this.List = new App.Collections.Test;
        this.ViewList = new App.Views.Test({model: this.List});

        this.List.fetch();

    },

    modify: function() {  
        var model = this.List.get(1);
        model.set({name: 'Item modified'});
        alert('Modified!');
    } 

});

Просмотров:

App.Views.Item = Backbone.View.extend({

    inizialize: function() {
        this.model.bind('change:name',this.render);
    },

    render: function() {
        $('#tmpl').tmpl(this.model.attributes).appendTo(this.el);   // jQuery Template
        return this;
    }

});

App.Views.Test = Backbone.View.extend({

    el: '#list',

    initialize: function() {                            
        _.bindAll(this, 'render');          
        this.model.bind('reset', this.render);          
    },

    render: function() {
        $(this.el).empty();
        this.model.each(function(model) {
            var viewItem = new App.Views.Item({model: model});
            $('#list').append((viewItem.render().el));
        });     
    }



});

Когда я перехожу к "# / modify", модель меняется, но это необновлено представление html, хотя я добавил в представления элементов этот код:

this.model.bind('change:name',this.render);

Может быть, я не понял правильное функционирование магистрали, как себя вести?

PS:Так как я новичок в магистрали, это принять любой совет.

1 Ответ

0 голосов
/ 11 августа 2011

В вашем методе modify вызовите соответствующее представление. Я обычно передаю экземпляр model и el. Так, например:

this.modifyPage = new App.Views.Test({
    el: $('#list'),
    model: model
});

Хотя, если вам не нужен el в качестве контекста маршрутизатора, лучше всего ограничить использование jQuery только представлениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...