オブジェクトの observableArray をループしたいのですが、このループでは、別の observableArray の対応する値を取得する必要があります。私はこれを行うことに成功しません。
私のコードは次のとおりです。
モデルとビューモデル:
//**********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]
と、[オブジェクト] [オブジェクト]が返されます。私が行う$root.config2().properties()[0]
と、空の文字列が返されます。
しかし、オブジェクト内の value プロパティを直接アドレス指定する方法がわかりません。