Javascript Knockout.js-设置/更改observable后未更新UI

Javascript Knockout.js-设置/更改observable后未更新UI,javascript,twitter-bootstrap,knockout.js,Javascript,Twitter Bootstrap,Knockout.js,我有一个列表,单击拇指时显示照片拇指,打开引导模式,将单击的拇指显示为全屏图像。 这是通过更新observable()来完成的 问题是。。UI未更新,导致未显示任何数据、图像或文本。模式弹出功能正常工作 但是..当console.logging记录可观察数据时。它按应显示对象,并进行更新 那么,为什么当我在console.logging中时,而不是在UI中时,这看起来很好呢 单击事件(foreach内部) 控制台日志的屏幕截图 由于您的所选照片是可观察的,因此在访问可观察的属性之前,您必须添加括

我有一个列表,单击拇指时显示照片拇指,打开引导模式,将单击的拇指显示为全屏图像。 这是通过更新observable()来完成的

问题是。。UI未更新,导致未显示任何数据、图像或文本。模式弹出功能正常工作

但是..当console.logging记录可观察数据时。它按应显示对象,并进行更新

那么,为什么当我在console.logging中时,而不是在UI中时,这看起来很好呢

单击事件(foreach内部)

控制台日志的屏幕截图

由于您的
所选照片
是可观察的,因此在访问可观察的属性之前,您必须添加括号:

<h4 id="myModalLabel" data-bind="text: selectedPhoto().PhotoText "></h4>
...
<img data-bind="attr: { src: selectedPhoto().BlobUrlPhoto }" id="full-modal-img" alt="" />
和访问属性,而不指定
selectedPhoto

<h4 id="myModalLabel" data-bind="text: PhotoText "></h4>
...
<img data-bind="attr: { src: BlobUrlPhoto }" id="full-modal-img" alt="" />

...

可观察对象是函数。您可以直接将它们用作敲除中的事件处理程序,额外的
setSelectedPhoto()
方法是多余的:


现在,
selectedPhoto
将在单击时更新

在您的模式中,您可以使用
和:selectedPhoto
来a)在
selectedPhoto
更改时重建内部零件,b)为您引用的属性设置上下文:


&时代;
接近
保存更改

在这种设置中,
BlobUrlPhoto
PhotoText
本身是否可见并不相关。带有绑定的
做了正确的事情。

self.selectedPhoto
中的所有属性都可以观察到怎么样?因为,似乎主对象被引用了,但实际绑定的属性没有更新,因为它们是不可观察的…顺便说一句,在容器元素上使用
with:selectedPhoto
绑定可以使这变得更容易。@Tomalak,是的,我在你发表评论时更新了我的答案。谢谢,哇,伙计们!。。在这一点上,我不得不说:非常非常高兴看到这个例子。。它解决了所有问题,让我很好地理解了这是如何与可观测数据联系在一起并访问它们。。
self.selectedPhoto = ko.observable();

    self.setSelectedPhoto = function(selPhoto) {
        self.selectedPhoto(selPhoto);
        console.log(self.selectedPhoto());
    }
<h4 id="myModalLabel" data-bind="text: selectedPhoto().PhotoText "></h4>
...
<img data-bind="attr: { src: selectedPhoto().BlobUrlPhoto }" id="full-modal-img" alt="" />
 <div class="modal fade" id="full-modal-photopage" data-bind="with: selectedPhoto" ...
<h4 id="myModalLabel" data-bind="text: PhotoText "></h4>
...
<img data-bind="attr: { src: BlobUrlPhoto }" id="full-modal-img" alt="" />