2013-10-17 2 views
1

웹 응용 프로그램에서 Pager JS, Knockout 및 Jquery를 사용하고 있습니다. 여기 코드 나는 다음과 같은 오류가 실행되는 코드호출기 JS 매개 변수 및 녹아웃

function ViewModel(){ 
    var self = this; 

    self.interior = ko.observable(); 
    self.interior.background = ko.computed(function() { 
    $.getJSON('/interiors', {interior_id: self.interior_id()}).success(function(data) { 
     return self.interior.background = data.interior.background_url; 
    }); 
    }, this); 

} 

$(document).ready(function() { 

    pager.Href.hash = "#!/"; 
    viewModel = new ViewModel(); 
    pager.extendWithPage(viewModel); 
    ko.applyBindings(viewModel); 
    pager.start(); 

}); 

입니다 :

Uncaught TypeError: Object #<ViewModel> has no method 'interior_id' 

내가 변수가 아직 존재하지 않는 것을 이해하고, 그녀는 방법이 없습니다. 그러나이 오류를 해결하는 방법은 무엇입니까?

+0

돈 존재하지 않는 함수를 호출하지 않습니까? 뭐하고 싶어? – SLaks

+0

그래서 'interior_id'매개 변수가 변경되면 JSON 페이지에서 데이터를 가져 와서 'interior'변수를 업데이트하려고합니다. 어쩌면 당신은 어떤 제안이 있겠습니까? – Rustery

+0

하지만 'interior_id'라는 뷰 모델에는 속성이나 관찰 가능조차 없습니까? –

답변

1

interior_id 나중에 다음 뷰 모델에 추가됩니다 경우 ko.computed 그래서 그것은 단지 background 속성이 액세스됩니다 그 기능을 평가하고 당신의 deferEvaluation 옵션을 사용할 수 없습니다 당신의 ViewModel가 만들어 질 때 :

self.interior.background = ko.computed(function() { 
    //do stuff 
}, this, {deferEvaluation: true}); 
+0

감사합니다. 작동 중!) – Rustery