我有这段代码:
<tr data-bind="foreach: ProductEffectImagesToMatch()">
<td>
<span>
<img data-bind="attr: { src: PoseId() ? ImageSrc() : '../images/style2/pose-select-placeholder.png' }, click: $root.PasteSpring"
width="120" />
</span>
</td>
</tr>
我在代码中设置了ImageSrc,但我不确定是否需要再调用一些东西来应用绑定,因为虽然设置了值,但我可以在console.log中看到图片网址不是得到更新。
这是viewmodel:
function EffectSelectionRootModel(imagesrc, poseid) {
var self = this;
self.ImageSrc = ko.observable();;
self.PoseId = ko.observable();
if (imagesrc) {
self.ImageSrc(imagesrc);
}
if (poseid) {
self.PoseId(poseid);
}
}
这就是设置值的方式:
var itemToEdit = ko.utils.arrayFirst(self.ProductEffectImagesToMatch(), function (item) {
return item;
});
if (itemToEdit) {
itemToEdit.ImageSrc = self.selectedPose().ImageUrl;
itemToEdit.PoseId = self.selectedPose().Id;
}
执行该代码后的viewmodel:
但图片未在页面上更新。
知道我还需要做什么吗? 谢谢,Laziale
答案 0 :(得分:1)
这样做
var itemToEdit = ko.utils.arrayFirst(self.ProductEffectImagesToMatch(), function (item) {
return item;
});
if (itemToEdit) {
itemToEdit.ImageSrc(self.selectedPose().ImageUrl);
itemToEdit.PoseId(self.selectedPose().Id);
}
您必须以这种方式设置新值,否则您将覆盖observable并且它将不再起作用。