基因敲除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);
答
在下面请看:http://jsfiddle.net/qszZD/
您在您的评论,你需要让你的foreach工作如上所述。希望这对你来说是一个好的开始。我使用的是几件事情,您可能会或可能不想照顾:
我使用可选的mappingOptions定义基于该数据从映射库返回计算的观测。通过使用KO映射,避免需要手动将元素推送到可观察数组中,映射库将自动为您处理,并使您能够通过提供映射选项来创建更多计算字段,进一步扩展模型。
让我知道如果您有任何问题。
你可能的意思是'console.log(myViewModel.drugList());' –
在这方面似乎没有什么区别,仍然得到空阵列安慰。 –
垃圾,我的坏,肯定是缓存问题,它似乎现在工作!现在我只需要弄清楚如何让我的foreach:drugList渲染。 –