2012-08-22 60 views
0

當我從服務器獲取數據時,無法在我的observableArray中插入任何值,但其他元素獲取數據。無法用服務器中的數據填充observableArray

JS 標記

var itemViewModel = { 
    item: {}, 
    isLoaded: ko.observable(false), 
    comments: ko.observableArray([]), 
    loadcontent: function (getID) { 
     $.ajax({ 
      url: '/api/item/details/' + getID, 
      dataType: 'json', 
      success: function (data) { 
       itemViewModel.item = data; 
       $.each(data.Comments, function (index) { 
        itemViewModel.comments.push(data.Comments[index]); 
        console.log(data.Comments[index]); 
        console.log(itemViewModel.comments); 
       }); 
       itemViewModel.isLoaded(true); 
       itemDetailBindings(); 
       console.log(itemViewModel.item); 
       console.log(itemViewModel.comments); 
      } 
     }); 
    } 
}; 

結果

Object 
[] 
Object 
[] 
Object 
[] 
[] 
Object 
[] 
+0

是返回JSON服務器?在Ajax調用的成功函數中嘗試console.logging只是'data'。 – bcmcfc

+0

是的,數據給出的項目值,但留下評論沒有價值 – skmasq

+0

這不會回答這個問題,但它可能會解決問題......爲什麼不聲明你的每個語句爲'$ .each(data.Comments,function(index ,thisComment){'?這將允許數組填充如下:'itemViewModel.comments.push(theComment);'我相信'itemViewModel.comments.push(this);'也可以,沒有額外的參數傳遞給匿名函數 – jimmym715

回答

0

你不需要itemViewModelsuccess方法,

success: function (data) { 
        item = data; 
        $.each(data.Comments, function (index) { 
         comments.push(data.Comments[index]); 
         console.log(data.Comments[index]); 
         console.log(comments); 
        }); 
        isLoaded(true); 
        itemDetailBindings(); 
        console.log(item); 
        console.log(comments); 
       } 
相關問題