knockoutjs 图像 src 未从 ko.observable 更新

Posted

技术标签:

【中文标题】knockoutjs 图像 src 未从 ko.observable 更新【英文标题】:knockoutjs image src not getting updated from ko.observable 【发布时间】:2016-06-08 21:08:56 【问题描述】:

我有这个代码:

  <tr data-bind="foreach: ProductEffectImagesToMatch()">
                            <td>
                                <span>
                                    <img data-bind="attr:  src: PoseId() ? ImageSrc() : '../images/style2/pose-select-placeholder.png' , click: $root.PasteSpring"
                                         />
                                </span>
                            </td>
                        </tr>

我在代码中设置 ImageSrc,但我不确定是否需要另外调用一些东西来应用绑定,因为虽然设置了值,但我可以在 console.log 中看到图像 url 不是正在更新。

这是视图模型:

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;
            

以及执行该代码后的视图模型:

但是页面上的图片没有更新。

知道我还需要做什么吗?

【问题讨论】:

【参考方案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,它将不再起作用。

【讨论】:

以上是关于knockoutjs 图像 src 未从 ko.observable 更新的主要内容,如果未能解决你的问题,请参考以下文章

来自 markdown 帖子的 Gatsby 图像未从 graphql 查询中显示

未从 Dropbox 检索图像

./src/App.js 尝试导入错误:“Switch”未从“react-router-dom”导出

使用 knockoutjs 在图像上显示工具提示悬停

图像未从文档目录中检索

错误:./src/App.js 尝试导入错误:“Switch”未从“react-router-dom”导出