Я создал массив с данными о некоторых музыкальных альбомах в режиме просмотра. Я могу использовать этот массив в цикле foreach (например), но я не могу отобразить только одно значение из этого массива.Нокаут: невозможно получить определенное значение от наблюдаемогоArray
Мой ViewModel:
function CD(data) {
this.Author = ko.observable(data.Author);
this.Title = ko.observable(data.Title);
this.Price = ko.observable(data.Price);
this.Label = ko.observable(data.Label);
this.Id = ko.observable(data.Id);
}
function NewsListViewModel() {
var self = this;
self.newsList = ko.observableArray([]);
$.getJSON("/music/news", function (allData) {
var mapped = $.map(allData, function (item) { return new CD(item) });
self.newsList(mapped);
});
self.oneObject = ko.computed(function() {
return self.newsList()[0].Title;
});
}
$(document).ready(function() {
ko.applyBindings(new NewsListViewModel());
});
И как я использовал его в HTML:
<ul data-bind="foreach: newsList">
<li data-bind="text: Title"></li>
<li data-bind="text: Author"></li>
<li data-bind="text: Price"></li>
<li data-bind="text: Label"></li>
</ul>
Это отлично работает. Но если я пытаюсь дополнительно отображать одно значение:
<ul data-bind="foreach: newsList">
<li data-bind="text: Title"></li>
<li data-bind="text: Author"></li>
<li data-bind="text: Price"></li>
<li data-bind="text: Label"></li>
</ul>
...
<p data-bind="text: oneObject"</p>
он dosen't работает, Firebug брошенную ошибку:
Type error: self.newsList()[0].Title is undefined
Почему я не могу получить одно конкретное значение, но я могу отобразить весь список?
PS. Код <p data-bind="text: newsList()[0].Title"</p>
тоже не работает.
Side Примечание: Там никогда никаких причин, чтобы написать 'ko.observableArray ([]) '. Просто 'ko.observableArray()' достаточно. –