【发布时间】:2012-08-22 11:37:01
【问题描述】:
尝试玩 Knockout,但在推送到可观察数组时遇到问题。我下面的代码通过单击按钮从服务器获取一些 json 数据,它返回一个对象数组。第一个 console.log 控制台很好,我的对象数组很好,花花公子。
但是,我似乎无法将每个对象都推送到我的可观察数组中。控制台向我显示空数组。我尝试了几种变体,但感觉我只是错过了一些简单的东西,但我很难找到它。
我要做的是从服务器加载一些数据,将其放入一个可观察的数组中,我可以将其绑定到模板并执行类似 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);
【问题讨论】:
-
你的意思可能是
console.log(myViewModel.drugList()); -
在这方面似乎没有什么不同,仍然得到空数组的安慰。
-
废话,我的错,一定是缓存问题,它现在似乎工作了!现在我只需要弄清楚如何让我的 foreach:drugList 进行渲染。
标签: knockout.js observable ko.observablearray