更改模型后,我会更新路径(它有一个包含应用程序当前状态的URL)。
当访问网址(或按下后退)时,我会从路线更新模型。
这给我带来了循环逻辑问题,我无法理解。事情正在被改变两次。
基于路线上的所有内容是否正常,并使用它来更新模型? 有两个型号是正常的吗? 什么是正常的?
任何帮助或建议将不胜感激。谢谢
答案 0 :(得分:2)
我不会像你那样建议使用路由器。通常,路由操作不应更改模型状态。通常,HTTP GET
操作不应有副作用。
路由器应该用于单页应用程序的不同页面之间的导航。应直接从处理用户输入的视图代码触发模型更改。我们假设您有一个模型User
,并查看UserView
,该视图可能会像这样:
var UserView = Backbone.View.extend({
events: {
"click #save", "save"
},
initialize: function(options) {
this.model = options.model;
},
render: function() {
//your render code here
},
save: function() {
var fields = {
name: this.$("#name").val();
email: this.$("#email").val();
};
this.model.save(fields , {
//after save go back to users page, or whatever
success: function() { window.location.hash = "/users"; },
error: this.displayError
});
}
});
Backbone并不是一个真正的MVC框架,所以路由器不应该被视为纯粹的控制器。即使你这样做了,改变路由动作中的状态也等同于改变MVC控制器GET
端点中的状态 - 糟糕,糟糕的想法。
如果你想坚持纯MVC模式,你应该实现自己的控制器层,或者看看Backbone之外的另一层。