我刚刚开始学习 Backbone 并且刚刚注意到我的代码中有一个错误,但我不确定如何解决它。
每次在 ControlView 中单击按钮时,它都会加载与该按钮单击关联的视图。伟大的!但是,如果您单击一个按钮 (#button-1),单击相邻的按钮 (#button-2),然后再次单击第一个按钮 (#button-1) - 我们现在将拥有该视图的两个实例,当然导致重复事件。这意味着每次我在该视图中提交表单时,都会收到 n + 2 个 HTTP 请求。
我已经调整了我的代码以在第一次初始化时创建视图,然后在每次需要时呈现这些视图。这是最好的方法吗?
非常感谢!
var ControlView = Backbone.View.extend({
el: $(".btn-group"),
active: 'btn-primary',
initialize: function()
{
_.bindAll(this, 'account', 'password');
this.account();
},
events: {
"click button.account" : "account",
"click button.password" : "password"
},
account: function()
{
this.reset();
this.state("button.account");
profile.fetch({
success: function()
{
AccountView.render();
}
});
},
password: function()
{
this.reset();
this.state("button.password");
PasswordView.render();
},
state: function(element)
{
$(element).addClass(this.active);
},
reset: function()
{
$(this.el).find("button").removeClass(this.active);
},
});
AccountView = new AccountView({model:profile});
PasswordView = new PasswordView({model:user});
ControlView = new ControlView;