2014-06-09 3 views
1

ViewModel이 "AppViewModel"이고 모델을 만들 때 JSON 데이터를 가져오고, 속성 중 하나 인 "totalSessions"을 가져 오려면 호출, "모델"AppViewModel 관찰 가능한 배열을 반환합니다. 내 코드는 오류없이 실행되고 있지만보기가 업데이트되지 않는 것 같습니다.knockout 관찰 가능한 배열의 각 요소를 ajax 호출의 데이터를 사용하여 업데이트합니다.

jsonapparray[j].totalsessions = totalSessions[0]; 

에 :

var jsonapparray = []; 

    function AppViewModel(appsdata) 
{ 
    var self = this;   
    var appsdata = $.parseJSON("["+ JSON.stringify(appsdata["user_of"]) + "]"); 

    var totalSessions = 0; 
    var i = 0;    
    for (var appkey in appsdata[0]) { 
     console.log(appsdata[0][appkey].name); 
     var elem = new Object(); 
     elem._id = appsdata[0][appkey]._id; 
     elem.category = appsdata[0][appkey].category; 
     elem.country = appsdata[0][appkey].country; 
     elem.name = appsdata[0][appkey].name; 
     elem.key = appsdata[0][appkey].key; 
     elem.timezone = appsdata[0][appkey].timezone; 
     elem.totalsessions = 000; 
     jsonapparray.push(elem); 
     updateSessionsInfo(i,elem,jsonapparray); 
     i++;  
    } 

    self.AppCount = i; 
    self.Apps = ko.observableArray(jsonapparray); 

    function updateSessionsInfo(i,elem,jsonapparray) 
    {   
     $.ajax({ 
       type:"GET", 
       url:Domain + "/o", 
       data:{ 
        "api_key":readCookie("api_key"), 
        "app_id":elem._id, 
        "method":"sessions" 
       }, 
       dataType:"jsonp", 
       async: false, 
       success:function (json) {     
        _sessionDb = json; 
        var totalSessions = _.pluck(_sessionDb,"t");          
        jsonapparray[j].totalsessions = totalSessions[0]; 
       } 
      });  
    } 

} 
+0

'jsonapparray [J]의'j'에서 온 .totalsessions' 않습니다를? – mhu

답변

0

당신은 변경해야

jsonapparray[i].totalsessions = totalSessions[0]; 

하지만 실제로는 도움이되지 않습니다. 배열의 항목 속성을 업데이트해도 업데이트가 트리거되지 않습니다.

elem.totalsessions = ko.observable(0); 

을 다음과 같이 값 업데이트 : 당신은 예를 들어, 모든 특성을 관찰해야한다

jsonapparray[i].totalsessions(totalsessions[0]); 
+0

많은 감사, 그것은 일했다, 당신은 흔들린다! –