我是淘汰js的新手,官方网站上维护的文档不提供完整的html文件。所以我最终编写了自己的脚本标签。当我创建html标记时,它没有按预期工作。然而,只是改变脚本标签的位置使其工作。
我的问题是,当脚本标记放在顶部时,该函数在html body元素中调用之前就可用了。它不是数据绑定,而将脚本放在底部只是解决它。只需重新排序脚本标记的位置,这怎么可能?有人可以提供必须提供的订单。据我所知,许多人更喜欢将脚本放在最后,以便DOM完全准备好并考虑速度。
我的代码如下:
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
</head>
<body>
<script type="text/javascript">
var myViewModel = {personName:'Bob', personAge:31};
ko.applyBindings(myViewModel);
</script>
The name is <span data-bind="text: personName"></span>
</body>
</html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
</head>
<body>
The name is <span data-bind="text: personName"></span>
<script type="text/javascript">
var myViewModel = {personName:'Bob', personAge:31};
ko.applyBindings(myViewModel);
</script>
</body>
</html>
答案 0 :(得分:5)
当ko.applyBindings
被调用时,knockout会在文档中搜索任何数据绑定标记并应用适当的绑定。因此,在调用ko.applyBindings
之前必须已加载文档和任何数据绑定标记,否则knockout将找不到要绑定的内容。
你有几个选择:
$(document).ready()
,或者如果您没有jQuery,请参阅此SO question了解其他等效选项