私は次のオブジェクトを持っています。
var q = {
availableModels: ko.observableArray();
selectedModel: ko.observable();
displayModel: function(item) { return item.text; }
image: ko.computed(function() {
return q.selectedModel().image;
});
}
これは次の要素にバインドされています。
<select data-bind="options: availableModels, value: selectedModel, optionsText: displayModel, optionsCaption: 'Choose a Model'"></select>
そして画像。
<img data-bind="attr: { src: image }">
いくつかのオブジェクトをavailableModelsにプッシュします。
q.availableModels.push({ index: 0, text: 'castis0', image: 'castis0.jpg'});
q.availableModels.push({ index: 1, text: 'castis1', image: 'castis1.jpg'});
次に、selectedModelを設定します
q.selectedModel({ index: 1, text: 'castis2', image: 'castis2.jpg' });
html要素には、availableModelsにプッシュしたオブジェクトが含まれていますが、selectedModelを設定しても、現在選択されている要素は変更されません。
そのように変更を適用すると機能します。
q.selectedModel = ko.computed(function() {
for(var i = 0; i < q.availableModels().length; i++) {
var data = q.availableModels()[i];
if (data.index == 1) {
return data;
}
}
})
ただし、画像のsrcは変更されません。
何を変更する必要があるのかわかりませんが、