2014-05-18 3 views
2

관측 가능한 배열을 가진 KnockoutJS 모델을 가지고 있는데, JSON에서로드 할 수 있어야하고 배열에 데이터 개체를 단순히 푸시 할 수 있어야합니다. 매핑을 사용하여 데이터를로드 할 때 더 이상 배열의 항목 길이/개수를 가져올 수 없다는 것을 알았습니다. 항상 0과 같습니다. 이것이 매핑 때문인 것 같아요? 여기 KnockoutJS 관측 가능한 배열 - 길이를 얻는 방법

가 ghist입니다 : 내가 원래 예를 들어 self.Regions = ko.observableArray();를 사용하여 배열에 넣고 있었어요

var SalesPerson = function (data) { 
    var self = this; 
    if (data != null) { 
     ko.mapping.fromJS(data, {Regions: regionMapping, Customers: customerMapping},  self); 
    } else { 
     self.ID = ko.observable(); 
     self.FullName = ko.observable().extend({ 
      required: { 
       message: '* Persons name needed' 
      } 
     }); 
     //self.Regions = ko.observableArray(); 
     self.Regions = ko.mapping.fromJS([]); 
     self.Customers = ko.mapping.fromJS([]); 
     //self.Customers = ko.observableArray(); // array of "Customers", who each  have many orders 
    } 

참고하고 여기에 related post

을보고 한 후이 self.Regions = ko.mapping.fromJS([]);로 변경하면 전체의 바이올린입니다 : fiddle example

바이올린을 테스트하려면 "인라인 모델에서로드"를 클릭하십시오. 지역 및 고객의 "개수"는 업데이트해야하지만 그렇지 않으면 0으로 유지됩니다.

답변

7

관찰 할 수있는 함수가 있으므로 속성에 액세스하기 전에 호출해야합니다.

그래서해야 text:Regions().length 여기 text:Regions.length

, 나는 아직 그것의 묘리를 터득거야 ... 많은 감사를 version

+0

자세한 정보를 업데이트 아니에요! – qtime67

+0

나는 왜 내가 "지역은 기능이 아니다"라는 것을 계속 이해하는지 정말로 모른다. 하지만 콘솔 로그를 작성하면 함수가 출력됩니다. – Nick