视图不是重新渲染,不确定原因

时间:2011-08-17 21:29:14

标签: javascript backbone.js

我有一个ScoreView可以跟踪当前的分数,但是当模型属性发生变化时,我无法重新渲染它。 这是视图的样子:

  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”是模型,但我希望上下文是视图。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我认为问题在于你在bind中的匿名函数中使用'this'。你应该试试这个:

  var self = this;
  this.model.bind("change", function() {
    if (this.hasChanged("score")) {
      alert("score has changed");
      self.render;
    }
  });

答案 1 :(得分:0)

this.model.bind("change", function(model) {
    if (model.hasChanged("score")) {
      alert("score has changed");
      this.render();
    }
}, this);