我在后端有一个带会话的快速应用程序,在前面我有Backbone + RequireJS。我的问题在于我拥有的会话模型,以及在视图上触发render方法的change事件。
所以:
所以,问题是:我如何避免这种不良行为,因此如果正确的路由处于活动状态,视图只会监听事件?
代码示例:
"use strict";
var SessionModel = Backbone.Model.extend({});
var sessionModel = new SessionModel();
var HomeView = Backbone.View.extend({
initialize: function() {
this.listenTo(sessionModel, "change", this.render);
},
render: function() {
// updates the main container element
}
});
var AppRouter = Backbone.Router.extend({
"": "home",
"about": "about"
});
var appRouter = new AppRouter();
appRouter.on("route", function() {
sessionModel.fetch(); // Updates session model on every route change
});
appRouter.on("route:home", function() {
var homeView = new HomeView();
homeView.render();
});
答案 0 :(得分:0)
您可以侦听特定属性,而不是倾听各种变化。
this.bind("change:SomeExpecificThing", doEspecificThing)
答案 1 :(得分:0)
我找到了解决问题的方法:
sessionModel.on("change", function () {
Backbone.history.loadUrl();
}).fetch();
通过这种方式,我们可以触发正确的路线并再次渲染,而无需向视图添加侦听器。