请原谅我无法上传任何内容。
简而言之,我有一个json数组,我想要淘汰阅读和循环,我已经包括在我开始ko时旁边的数组。这很愉快,当我尝试用ajax加载一些json时它就失败了。
我有对象:
hutber.portfolio.ko = {
init: function(){
ko.applyBindings(new hutber.portfolio.ko.portfolioViewModel());
},
items: [],
portfolioViewModel: function(){
var self = this;
var data = [
{ "title":"poo"
}
];
self.items = ko.observableArray(data);
var jamie = $.getJSON('/js/pages/portfolio.json').done(function(info){
self.items = info;
});
}
};
hutber.portfolio.init();
portfolio.json
[
{ "title":"willies"
}
]
标记
<ul data-bind="foreach: items">
<li data-bind="text: title">
<h4>Volkswagen.co.uk</h4>
</li>
</ul>
在我看来,这应该是完美的。我的ajax请求完成后,我正在使用self.items
更新self.items = info;
值。
答案 0 :(得分:3)
您的回调是替换可观察数组并且没有正确设置它。你需要调用observable传入对象来设置它。
var jamie = $.getJSON('/js/pages/portfolio.json').done(function(info){
self.items(info); // set the items to the info array
});
答案 1 :(得分:1)
问题在于您重新分配self.items
的值而不是更新集合。
您想要做的是:
var jamie = $.getJSON('/js/pages/portfolio.json').done(function(info){
info.forEach(function (x) { self.items.push(x); });
});
我假设info
是一个数组,如果不是直接推送它。