Я работаю в первый раз на стороннем приложении, которое было построено с помощью Knockout (с использованием v2.1.0).нокаут с наблюдаемым объектом json - не заполняется моя модель просмотра
Я не могу получить извлеченный объект json в мою модель просмотра, хотя данные извлекаются. Код, с которым я работаю, довольно большой (этот конкретный файл viewmodel, в котором я работаю, составляет около 1700 строк). Вот усеченная версия кода:
var ViewModel = function(){
var self = this;
//a ton of other self.observables...
//this is the part I'm trying to update with a new enhancedTiers (array of objects)
self.medical = {
//a bunch of other self.observables...
enhancedTiers: ko.observableArray([])
},
//more self.observables...
//down to the ajax success callback I'm working within
success: function(data, textStatus, jqXHR) {
...
switch (self.currentService()) {
case "medical" :
with (self.medical) {
//we set the existing observable data here...
//trying to set the NEW data
enhancedTiers(data.enhancedTiers);
console.log('***************************');
console.log(data.enhancedTiers);
console.log(data.enhancedTiers[0].name);
console.log(data.enhancedTiers[0].summaryBean.familyDedMet);
console.log('***************************');
//all these log out the correct data
}
}
...
}
В моем HTML, я делаю следующее, чтобы посмотреть, смогу ли я получить некоторые данные для вывода:
<span data-bind="text: medical.enhancedTiers()[0].name"></span>
Я получаю следующее сообщение об ошибке:
Uncaught Error: Unable to parse bindings.
Message: TypeError: Cannot read property 'name' of undefined;
Bindings value: text: medical.enhancedTiers()[0].name
Если изменить HTML для этого:
<span data-bind="text: medical.enhancedTiers()[0]"></span>
Пользовательский интерфейс отображает [объект объекта].
Я также попытался использовать плагин отображения, но не смог получить эту работу.
У меня, очевидно, есть данные от json-ответа, однако я не могу получить его в viewmodel. У кого-нибудь есть какие-либо советы о том, как вернуть мой возвращенный объект json массивов в мою модель просмотра?
Если я жестко кодирую расширенные словари json в моей модели просмотра, у меня нет проблем с привязкой пользовательского интерфейса к этим данным, я просто не могу получить свои данные в модели viewmodel.
Спасибо человеку, который, похоже, вопрос ... Кажется, немного грязный в HTML, но я могу обернуть логику в родительском 0 ->, чтобы он выглядел немного лучше. –