현재 점수를 추적하는 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"가 모델이라고 생각하지만 컨텍스트를보기로하고 싶습니다. 어떻게 해결할 수 있을까요?
입니다'사용하여 "이"는 if 문에 여전히 외부 함수의 this.model을 의미합니다. 따라서 this.render()는 여전히 정의되지 않은 것으로 간주됩니다. – egidra
백본에서 0.5.x'.bind()'는 문맥을 세번째 인자로 받아 들인다. 그래서 this는 '012'를 참조하게된다. –
0.3.x 버전을 사용한다면 다음과 같이 할 수있다. 'this.model.bind ("change", _ .bind (function (model) {...}, this))' –