Javascript 视图未重新招标,不确定原因
我有一个记录当前分数的ScoreView,但是当模型属性更改时,我很难让它重新渲染。 以下是视图的外观:Javascript 视图未重新招标,不确定原因,javascript,backbone.js,Javascript,Backbone.js,我有一个记录当前分数的ScoreView,但是当模型属性更改时,我很难让它重新渲染。 以下是视图的外观: var ScoreView = Backbone.View.extend({ initialize: function() { _.bindAll(this, 'render'); this.model.bind("change", function() { if (this.hasChanged("score")) {
var ScoreView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render');
this.model.bind("change", function() {
if (this.hasChanged("score")) {
alert("score has changed");
this.render;
}
});
},
render: function() {
alert("drawing new score");
return this.model.get("score");
},
});
分数更改时,视图不会重新渲染。当分数改变时,我确实会收到“分数已改变”的警告。当我打印出“this.render”的内容时,控制台说该函数未定义。我认为代码认为上下文中的“this”是模型,但我希望上下文是视图。如何修复此问题?我认为问题在于您在绑定内部的匿名函数中使用了“this”。你或许应该试试这个:
var self = this;
this.model.bind("change", function() {
if (this.hasChanged("score")) {
alert("score has changed");
self.render;
}
});
if语句中的“this”仍然引用外部函数中的this.model。因此,this.render()仍被视为未定义。在主干网0.5.x
.bind()
中,接受上下文作为第三个参数,因此此
将引用视图如果使用0.3.x版本,则可以执行以下操作:此.model.bind(“更改”,uu.bind(函数(模型){…},this))
this.model.bind("change", function(model) {
if (model.hasChanged("score")) {
alert("score has changed");
this.render();
}
}, this);