Backbone.js 主干视图未根据model.bind刷新

Backbone.js 主干视图未根据model.bind刷新,backbone.js,Backbone.js,我有一个index.html,看起来像这样- <div id="header"> <div id="form"></div> </div> <div><ul id="admin_list"></ul></div> 管理员列表的视图如下所示- var adminView = Backbone.View.extend({ el:

我有一个index.html,看起来像这样-

    <div id="header">
         <div id="form"></div>
    </div>   

    <div><ul id="admin_list"></ul></div>
管理员列表的视图如下所示-

     var adminView = Backbone.View.extend({
        el: "#admin_list", 
        initialize: function(){
            this.render();
            this.model.bind("add", this.render, this);
        },
        render: function(){
            $(this.el).html("<li>New Model Added</li>");
        }
     });
我的问题是,当我保存模型时,添加了新的li项new model后,不会刷新admin_列表。我猜,this.model.bindadd,this.render,没有调用它

谁能帮我解释一下吗


干杯

在上面的代码中,您没有创建管理视图,只有 标题视图。此外,还需要将集合传递给视图:

var header_View =  new headerView({collection: your_list});
var admin_View =  new adminView({collection: your_list});

模型的add事件仅在添加到集合时才会激发。如果您只是保存模型,并希望在成功将adminView持久化到服务器上后重新呈现adminView,我相信您需要添加自己的事件,例如:

myModel = Backbone.Model.extend({
    save: function(attrs, options) {
        options || (options = {});
        var success = options.success || null;
        var model = this;
        options.success = function(model, resp) {
            model.trigger('saved', model);
            if (success) success(model, resp);
        };
        Backbone.Model.prototype.save.apply(this, arguments);
    }
});

然后在adminView.initialize中,绑定到“saved”而不是“add”。

如果我使用$header,那么我的header\u视图应该在$document.readyfunction{}中实例化;如果没有,我可以定义el:header。我注意到的另一件事是,您将headerview呈现为两倍,一次是在实例化它之后,一次是在initialize方法中
var header_View =  new headerView({collection: your_list});
var admin_View =  new adminView({collection: your_list});
myModel = Backbone.Model.extend({
    save: function(attrs, options) {
        options || (options = {});
        var success = options.success || null;
        var model = this;
        options.success = function(model, resp) {
            model.trigger('saved', model);
            if (success) success(model, resp);
        };
        Backbone.Model.prototype.save.apply(this, arguments);
    }
});