Я хочу пропустить наблюдаемый массив объектов, и в этом цикле я должен получить соответствующее значение другого наблюдаемого массива. Мне это не удается.KnockoutJs: прямой адрес наблюдаемого объекта Array in view
Мой код выглядит следующим образом.
Модель и ViewModel:
//**********MODEL********************
function Configuration() {
var self = this;
self.properties = ko.observableArray();
}
function deviceProperty() {
var self = this;
self.property = ko.observable("");
self.value = ko.observable("");
}
//**********VIEWMODEL****************
function compareModelView() {
var self = this;
self.config1 = ko.observable(new Configuration);
self.config2 = ko.observable(new Configuration);
$().ready(function() {
//Load config1 and config2
});
}
//**********jQuery********************
(function ($) {
$(document).ready(function() {
ko.applyBindings(new compareModelView());
});
})(jQuery);
Вид:
<!-- ko foreach: config1().properties -->
<tr>
<td data-bind="text: property()"></td>
<td data-bind="text: value()"></td>
<td data-bind="text: $root.config2().properties()[$index].value()"></td>
</tr>
<!-- /ko -->
Knockoutjs выдает ошибку, говоря, что это свойство не существует.
Когда я делаю $root.config2().properties().length
, он возвращает число (3). Когда я делаю $root.config2().properties()[0]
, он возвращает [Object] [Object]. Когда я делаю $root.config2().properties()[0]
, он возвращает пустую строку.
Но я не вижу, как я могу напрямую обратиться к значению свойства внутри объекта?
Почему вы хотите сделать это? Представление должно быть чистым от кода – Anders
@Anders Поскольку у меня есть эта модель, и я хочу создать экран сравнения между различными конфигурациями. – JurgenStillaert
Но его больше MVVM переместить код в viewmdodel. Это все, что я говорю. – Anders