У меня есть этот код, который я ожидал, чтобы сделать меню, которое запрошенные из REST:Невозможно отобразить 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()' ошибка: 'Message: menus не является функцией' – xybrek
У вас есть' Parse.Object 'в массиве' results', который не имеет свойств, поэтому вам нужно преобразовать их в JSON, прежде чем переходить в Knockout 'menus.push (object.toJSON());' – nemesv