2012-07-24 7 views
1

JSON 데이터를 ko.observableArray에로드 할 수없고 이유가 없습니다.JSON을 observableArray에 매핑하는 중 오류가 발생했습니다.

$(document).ready(function(){ 
    function Region(uid, name) { 
     this.uid = ko.observable(uid); 
     this.name = ko.observable(name); 
    } 

    function CompanyViewModel() { 
     this.regions = ko.observableArray([]); 
    } 

    ko.applyBindings(new CompanyViewModel()); 

    // Init. 
    $.getJSON('/regions/', 
     function(data){ 
      if(data.status == 'ok') 
      { 
       var mappedData = ko.utils.arrayMap(data.regions, function(item) { 
        return new Region(item.uid, item.name); 
       }); 
       CompanyViewModel.regions(mappedData); 
      } 
     } 
    ); 
}); 

디버거는 말한다 : catch되지 않은 형식 오류 : 개체 기능 CompanyViewModel (...)가있는 방법 '지역 없습니다'

좀 명백한 오류가 녹아웃 새로운 확신 해요,하지만 난하지 않습니다 어디 있는지 알아.

답변

3

그것을 테스트하지 않은,하지만 당신이 무슨 뜻인지에 대한 아이디어를 줄 것이다, 이것은 내가 어떻게 할 것입니다 :

$(document).ready(function(){ 
    var Region = function(uid, name) { 
     this.uid = ko.observable(uid); 
     this.name = ko.observable(name); 
    } 

    var CompanyViewModel = function() { 
     this.regions = ko.observableArray([]); 
    } 

    var model = new CompanyViewModel(); 
    ko.applyBindings(model); 

    // Init. 
    $.getJSON('/regions/', 
     function(data){ 
      if(data.status == 'ok') 
      { 
       var mappedData = ko.utils.arrayMap(data.regions, function(item) { 
        return new Region(item.uid, item.name); 
       }); 
       model.regions(mappedData); 
      } 
     } 
    ); 
}); 
+0

감사합니다! 나는 내 오류를 이해하기를 바랍니다. "익명"viewmodel 객체를 만들고 객체가 아닌 모델 정의 자체에서 메서드를 호출하려고했습니다. – vandroid

+0

맞아요, 당신은 모델 인스턴스에서 일하지 않았습니다. 그런데 재산을 바꾸는 계획을 세우지 않으면 (ID라고 말하면) 관측 대상으로 만들 이유가 없습니다. –

관련 문제