有没有人想过为什么在模型上执行.set时这个darn视图不会更新?我想如果可能与我放入的渲染功能有关......
骨干视图:
App.Views.PanelOne = Backbone.View.extend({
initialize: function() {
console.log("View PanelOne Initialized");
panelonesetting = this.model.get('panel_one');
console.log( panelonesetting );
_.bindAll(this, 'render');
this.model.bind('change', this.render);
},
render: function(){
if ( panelonesetting == "poolprice" ){
this.$el.html(JST['dashboard/poolprice']({}));
return this;
};
if ( panelonesetting == "none" ){
this.$el.html(JST['dashboard/none']({}));
return this;
};
if ( panelonesetting == "noconnection" ){
this.$el.html(JST['dashboard/noconnection']({}));
return this;
};
}
});
骨干路由器:
App.Routers.Dashboard = Backbone.Router.extend({
routes: {
"" : "index"
},
initialize: function(options) {
console.log("Router initialized");
preflist = new App.Models.PrefList({});
preflist.fetch({
success: function() {
console.log( preflist );
paneloneview = new App.Views.PanelOne({ model: preflist });
$('#panelone').html(paneloneview.render().$el);
}
});
},
index: function() {
}
});
答案 0 :(得分:1)
你有一些偶然的全局变量。特别是,您在视图中initialize
:
panelonesetting = this.model.get('panel_one');
然后render
查看panelonesetting
。 <{1}}上没有var
因此它是一个全局变量。
构造视图时会调用panelonesetting
方法,而且永远不会再调用它。这意味着initialize
将被分配初始panelonesetting
值,然后永远不会更新。因此,如果模型已更改,则会调用panel_one
,但会查看原始render
设置。结果似乎没有任何改变:你可以根据需要多次调用你的panel_one
你想要的任何模型改变,你永远不会看到任何事情发生。
您应该检查render
方法中panel_one
的值:
render
路由器中的initialize: function() {
_.bindAll(this, 'render');
this.model.bind('change', this.render);
},
render: function(){
var panelonesetting = this.model.get('panel_one');
if(panelonesetting == "poolprice")
this.$el.html(JST['dashboard/poolprice']({}));
if(panelonesetting == "none")
this.$el.html(JST['dashboard/none']({}));
if(panelonesetting == "noconnection")
this.$el.html(JST['dashboard/noconnection']({}));
return this;
}
paneloneview`变量在几乎可以肯定是本地的时候也是全局变量。