我在页面底部包含了我的viewmodel脚本并遇到了问题。问题是在调用applyBindings
之前(也在底部),用户可以看到未绑定页面,显示裸模板。其中一个解决方案是将脚本放在顶部,并将applyBindings
包裹在$()
或“文档就绪”中。但我真的拒绝接受没有办法解决问题并将脚本放在最底层。
答案 0 :(得分:5)
我总是使用这样的东西:
<div data-bind="visible:true" style="display:none">
...
</div>
答案 1 :(得分:0)
您可以使用CSS隐藏相关元素,并在applyBindings
<强> CSS 强>
.hide-while-loading { display: none }
<强> JS 强>
var elements = document.getElementsByClassName('hide-while-loading ');
for (var i = 0; i < elements.length; ++i) {
// remove class:
elements[i].className = elements[i].className.replace('/\bhide-while-loading\b/','');
}
实际上代码删除了hide-while-loading
类,而不只是让元素可见,因此隐藏 的元素将保持隐藏状态。
答案 2 :(得分:0)
您可以使用css绑定来切换未绑定元素的可见性。
可能在包含元素上,执行以下操作:
<div data-binding="css: { notready: !isReady()}" class="notready">
Other children with bindings
</div>
添加CSS类:
.notready { display : none; }
然后,在视图模型中添加一个新的observable:
isReady : ko.observable(true)
当notready
评估为isReady
时,代码会切换/删除true
CSS类。