我有這樣的代碼,我期待着呈現,其從靜止查詢菜單:無法呈現observableArray
var PageViewModel = function() {
var self = this;
// self.menus = [
// { name: 'Foor', slug: 'foo'},
// { name: 'Bar', slug: 'bar'},
// { name: 'Fam', slug: 'fam' }
// ];
self.menus = ko.observableArray();
var result = query.find({
success: function(results) {
console.log("Successfully retrieved " + results.length + " menus.");
var menus = [];
for (var i = 0; i < results.length; i++) {
var object = results[i];
console.log(JSON.stringify(object));
menus.push(object);
}
self.menus(menus);
},
error: function(error) {
console.log("Error: " + error.code + " " + error.message);
}
});
console.log('Menus = ' + JSON.stringify(self.menus));
this.transitionTo = function(slug) {
window.location.href = slug + ".html";
}
}
HTML:
<ul class="uk-text-center" data-bind="foreach: menus()">
<li class="">
<button class="button button-white uk-margin-bottom"><span data-bind="text: name">Foo</span></button>
</li>
</ul>
的問題是,菜單呈現列表但名字是空的。但是,如果我只是讓代碼使用靜態數組,它可以正常工作。有了這個,我試着用Chrome瀏覽器和調試我所看到的東西可能會丟失:
出了什麼問題嗎?
可否請你暴露更多一點的HTML?還有,控制檯輸出中有什麼?您可能需要使用'foreach:menus()',但需要更多詳細信息,謝謝 – brianlmerritt
我添加了HTML代碼。另外,如果我將代碼更改爲'foreach:menus()'錯誤爲'消息:菜單不是函數' – xybrek
您的'results'數組中沒有暴露屬性的'Parse.Object',所以你需要將它們轉換爲JSON,然後傳遞給Knockout'menus.push(object.toJSON());' – nemesv