2013-05-22 2 views
2

여러 JSON 소스를 하나의 viewModel로 매핑하려고하는데 작동하지 않는 것 같습니다.여러 다른 JSON 소스를 녹아웃 JS와 함께 하나의 뷰 모델로 매핑

get = function() { 

     $.getJSON("localhost/urlWhichWorksWithSingleMapping", function(getdata) { 
      viewModel = ko.mapping.fromJS(getdata, mappingEntities); 
     }); 

     $.getJSON("localhost/anotherUrlWhichWorksWithSingleMapping", function(getdata) { 
      ko.mapping.fromJS(getdata, mappingPerformedActions, viewModel); 
     }); 

      ko.applyBindings(viewModel); 
    }; 

get(); 
:이

var mappingPerformedActions = { 
     'PerformedActions': { 
      key: function(data) { 
       return ko.utils.unwrapObservable(data.Id); 
      } 
     } 
    }; 

    var mappingEntities = { 
     'Entities': { 
      key: function(data) { 
       return ko.utils.unwrapObservable(data.Id); 
      } 
     } 
    }; 

가 그럼 난 내 get 함수를 구축 : 나는 다음과 같이 서로 다른 매핑 옵션을 만들어

var viewModel; 

:

은 내가 뷰 모델을 생성

은 그 때 나는 루프 저점 엔티티하려고

<ul data-bind="foreach: BiztalkEntities"> 
    <li><span data-bind="text: Name"></span></li> 
</ul> 
이이 모든 난 그냥 하나의 소스가있을 때 작동하므로 URL 또는 뭔가 실수가 없는지 단일 소스와

주를 작동

. 스택 오버플로를 살펴 봤지만 내 요구 사항에 맞는 예제를 찾을 수없는 것 같습니다. 여기서 내가 잘못한 것을 말할 수 있기를 바랍니다.

답변

2

viewModel을 두 개의 다른 속성으로 매핑하고 매핑하십시오. 그렇지 않으면 데이터를 단일 배열로 병합해야합니다.

var viewModel = {PerformedActions : [], Entities : []};

그런 다음 수신 데이터를 할당합니다

$.getJSON("localhost/urlWhichWorksWithSingleMapping", function(getdata) { 
     viewModel.PerformedActions = ko.mapping.fromJS(getdata, mappingEntities); 
    }); 


    $.getJSON("localhost/anotherUrlWhichWorksWithSingleMapping", function(getdata) { 
     viewModel.Entities = ko.mapping.fromJS(getdata, mappingPerformedActions); 
    }); 

이, 비동기 여전히 데이터가없는 바인딩의 시간에 너무. 이것은 제가 올 수있는 최선의 방법입니다. 문제가 어디에 있는지는 분명하지 않습니다. 콘솔에서 오류를 확인하십시오. 그러면 문제가 어디에서 발생했는지 이해하는 데 도움이됩니다.