Backbone.js 主干视图未根据model.bind刷新
我有一个index.html,看起来像这样-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:
<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);
}
});