2012-10-03 3 views
0

그래서 두 모델을 백본보기로 전달합니다. 뷰의 초기화 함수 내에서 this.options.model2를 사용하여 두 번째 모델을 얻습니다. 스크롤 위치 저장을위한보기 내의 백본 범위 옵션

App.MyView = Backbone.View.extend({ 
initialize: function() { 
     this.stateModel = this.options.model2; 

     // test to make sure the stateModel is being set correctly. This works. 
     console.log("test: : " + this.stateModel.get("blah")); 

     // Save scroll position in model2 on scroll 
     $(window).on('scroll', function() { 
      this.stateModel.set("savedScrollY", this.pageYOffset); 
     }); 
}); 

내가 오류를 받고 있어요 스크롤

:

TypeError: Result of expression 'this.stateModel' [undefined] is not an object.

나는이되지 앱이 트리거가 꺼질 때에 어떤 범위를 이해하는 날의 결과이다 같은데요.

답변

1

this은 jQuery 이벤트 콜백 내에서 원래 선택기의 요소로 설정됩니다.

... 
var that = this; 
$(window).on('scroll', function() { 
    // here this = window 
    that.stateModel.set("savedScrollY", this.pageYOffset); 
}); 
+0

유용하지만 코드에는 "this.pageYOffset"이 표시되어야하며 창에는 pageYOffset 메서드가 있어야합니다. –

+0

@ storm_m2138, 수정 됨, 감사합니다! –