我有以下对象。
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 没有改变。
我不知道我需要改变什么,