您看到的问题与with
和您的自定义绑定在同一元素上有关。当值为null时,with
绑定将清除子元素。这将删除您的加载器(虽然它已被作为with
绑定所使用的“模板”的一部分被复制掉),但当您填充infos
时会将其放回。让他们在相同的元素也意味着绑定从更新isAvatarLoading
改变infos
和触发一次两次(一次
最简单的办法解决这一问题之一就是打出像绑定:
<div class="avatar" style="margin-left: 55px;" data-bind="loadingWhen: isAvatarLoading">
<div data-bind="with: infos">
<div data-bind="text: firstName"></div>
<div data-bind="text: lastName"></div>
<div data-bind="text: age"></div>
<div data-bind="text: description"></div>
<div style="margin-left: 55px;" id="" data-bind="with: image">
<img data-bind="attr: { src: Url }" />
<div data-bind="text: Description"></div>
</div>
</div>
</div>
如果你不希望添加其他元素,那么你可以使用无容器with
语法,如:
<div class="avatar" style="margin-left: 55px;" data-bind="loadingWhen: isAvatarLoading">
<!-- ko with: infos -->
<div data-bind="text: firstName"></div>
<div data-bind="text: lastName"></div>
<div data-bind="text: age"></div>
<div data-bind="text: description"></div>
<div style="margin-left: 55px;" id="" data-bind="with: image">
<img data-bind="attr: { src: Url }" />
<div data-bind="text: Description"></div>
</div>
<!-- /ko -->
</div>
样品:http://fiddle.jshell.net/rniemeyer/75Lyn/
那就清理一下吧! 非常感谢您的信息! – 2013-04-25 14:37:00