基因敲除observableArray push - 不推送到数组

基因敲除observableArray push - 不推送到数组

问题描述:

有一个去与Knockout玩,我推到一个可观察数组有问题。我下面的代码通过点击按钮从服务器获取一些json数据,它返回一个对象数组。第一个console.log控制台很好,我有我的阵列的对象很好,丹迪。基因敲除observableArray push - 不推送到数组

但是,我似乎无法将每个对象推到我的可观察数组上。控制台显示空数组。我尝试了几种变化,但感觉我只是想念一些简单的东西,但我很难追踪它。

我想要做的是从服务器加载一些数据,把它放在一个可观察的数组中,我可以绑定到一个模板,并做一些像foreach一样的东西来输出数组的内容。

$(function() { 
    $('#load').click(function() { 
     $.getJSON('/PreferredDrugList/service/preferredDrugs/y', function(data) { 
      $(data.preferredDrugs).each(function(index, obj) { 
       console.log(obj); 
       $('#result').append('<p>' + (++index) + ') ' + obj.drugName + ' : ' + obj.dosageFormDesc + '</p>'); 

       myViewModel.drugList.push(obj); 
       console.log(myViewModel.drugList); 
      }); 
     });//end getJSON 
    });//end load 

});//end ondomready 

var myViewModel = { 
    drugList: ko.observableArray() //list of drug names 
}; 

ko.applyBindings(myViewModel); 
+1

你可能的意思是'console.log(myViewModel.drugList());' –

+0

在这方面似乎没有什么区别,仍然得到空阵列安慰。 –

+0

垃圾,我的坏,肯定是缓存问题,它似乎现在工作!现在我只需要弄清楚如何让我的foreach:drugList渲染。 –

在下面请看:http://jsfiddle.net/qszZD/

您在您的评论,你需要让你的foreach工作如上所述。希望这对你来说是一个好的开始。我使用的是几件事情,您可能会或可能不想照顾:

knockoutJS.mapping

我使用可选的mappingOptions定义基于该数据从映射库返回计算的观测。通过使用KO映射,避免需要手动将元素推送到可观察数组中,映射库将自动为您处理,并使您能够通过提供映射选项来创建更多计算字段,进一步扩展模型。

让我知道如果您有任何问题。