У меня есть, вероятно, простой вопрос нокаута, но я начинаю с ним новичком. Я бросил эту страницу кода, над которой работал кто-то еще, но не закончил.KnockoutJS Binding Issue - Невозможно прочитать свойство
Когда эта страница сначала загружается, данные извлекаются и основная сетка загружается должным образом. Проблема возникает, когда я пытаюсь автоматически выбрать первую запись в результатах, чтобы список деталей заполнился ниже сетки.
Когда это произойдет, я получаю следующее сообщение.
Uncaught TypeError: Невозможно обработать связывание "текст: функция() {вернуться selected.RequestLog.Timestamp}", сообщение: Не удается прочитать свойство 'Timestamp' неопределенной
Вот это фрагменты кода, с помощью которых Я работаю. Данные возвращаются из Entity Framework.
var siteLogModel = function() {
var self = this;
self.errorList = ko.observableArray([]);
self.selected = ko.observable();
self.updateErrorList = function (page) {
jQuery.ajax({
type: "POST",
url: "/Admin/ErrorPage",
data: { pageNum: page },
success: function (result) {
self.errorList(result);
self.selected(result[0]);
// Since we have success, add the click handler so we can get the details about a row by id.
//addRowHandlers();
},
error: function (result) {
jQuery("#status").text = result;
}
});
};
};
Это фактическое обязательство, которое пытается произойти после загрузки данных. RequestLog, похоже, не существует во время привязки, хотя он делает, кажется, нормально, если я установил точку останова в указанной выше функции на строке self.selected (result [0]).
Я думаю, что это проблема с охватом, но я не могу для жизни меня думать о том, как лучше всего это исправить. Любая помощь будет оценена по достоинству.
<div class="param">
<span>Time</span>
<label data-bind="text: selected.RequestLog.Timestamp"></label>
</div>
ОБНОВЛЕНИЕ: вот часть документа готова.
jQuery(document).ready(function() {
var vm = new siteLogModel();
vm.updateErrorList(0);
ko.applyBindings(vm);
});
Как выглядит ваш объект результата? Кроме того, может возникнуть проблема с тем, как вы используете наблюдаемый массив. Нет необходимости передавать конструктору пустой массив (хотя это, вероятно, не повредит), и вы можете использовать self.errorList.push (result) для добавления значений. – bigbangtheorem