2014-07-09 2 views
0

녹아웃을 배우고 있으며 다른 URL로 여러 서버를 호출하고 싶습니다. 나는 넉 아웃에 대해 잘 모르겠지만, 난 당신이 할 수 없습니다 알고, 그리고 applyBinding 여러 번 사용하지 않아야합니다, 그래서 나는 다음과 같은있다 : 사람이 단계를 줄 수 있다면 매우 감사하겠습니다 녹아웃 js를 사용하여 여러 서버 호출

<h2 data-bind="text: data2().user, valueUpdate: 'afterkeydown'">User</h2> 
<h2 data-bind="text: data2().id">ID</h2> 
<input type="text" data-bind="value: user, valueUpdate: 'afterkeydown'"    placeholder="text goes here" /> 

<div data-bind="foreach: data1()"> 
    <div data-bind="text: name"></div> 
    <div data-bind="text: count"></div> 
</div> 


<script src="~/Scripts/knockout-3.1.0.js"></script> 
    <script> 
     var viewModel = function() { 
      var self = this; 
      self.data1 = $.getJSON('http://localhost:57635/api/Stats/GetAllStats', function (data) { 
       name: data.Name; 
       count: data.Count 
      }); 
      self.data2 = $.getJSON('http://localhost:57635/api/Stats/GetItem', function  (data) { 
       user: ko.observable(data.ItemName); 
       id: data.Id 
      }); 
     }; 
     ko.applyBindings(viewModel)   
    </script> 

올바른 방향으로 또는 수정.

다음과 같이 I 받고있어 콘솔의 오류는 다음과 같습니다

Uncaught TypeError: Unable to process binding "text: function(){return data2().user }" 
Message: object is not a function 

종류가

제임스

답변

0

같은 DOM 요소에 applyBinding 여러 번 사용하지에 대한 올바른 관하여 . 그렇게하면 예외가 발생합니다.

"Unable to process binding .."오류에 대해서는 오류 메시지를보고 사용자가 data2를 처리하고 있음을 알 수 있습니다.이 데이터는 기능으로서 객체입니다. 이유는 data2가 $ .getJSON 함수의 반환 값이기 때문입니다. 그리고 관찰 가능한 것으로 정의하지 않으면 관찰 할 수 없습니다.

()을 (를) (으)로 떨어 뜨리려는 시도 : <h2 data-bind="text: data2().user, valueUpdate: 'afterkeydown'">User</h2> 대신 다음을 사용하십시오 : <h2 data-bind="text: data2.user, valueUpdate: 'afterkeydown'">User</h2>. 도움이 되었기를 바랍니다.

관련 문제