gpt4 book ai didi

javascript - KnockOut js脚本标签不应用数据绑定(bind)

转载 作者:行者123 更新时间:2023-11-28 05:16:12 25 4
gpt4 key购买 nike

我对 knockout js 很陌生,官方网站上维护的文档没有提供完整的 html 文件。所以我最终编写了自己的脚本标签。当我创建 html 标记时,它没有按预期工作。然而,只要改变脚本标签的位置就可以了。

我的问题是,当脚本标签放在顶部时,函数在 html 正文元素中调用之前可用。它仍然没有数据绑定(bind),而将脚本放在底部只是解决了它。这怎么可能仅仅通过重新排序脚本标签的位置呢?有人可以提供必须提供的东西的顺序吗?我知道很多人更喜欢在最后使用脚本,以便 DOM 完全准备好并考虑速度。

我的代码如下:

  1. 没有数据绑定(bind)。

<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>

  1. 作品

<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>

最佳答案

ko.applyBindings 被调用时,knockout 会在文档中搜索任何数据绑定(bind)标签并应用适当的绑定(bind)。因此,必须在调用 ko.applyBindings 之前加载文档和任何数据绑定(bind)标记,否则 knockout 将找不到要绑定(bind)的任何内容。

您有几个可行的选项:

  1. 将 applyBindings 移动到文档底部,在它被调用时任何数据绑定(bind)都已经到位。
  2. 将 applyBindings 包装在回调函数中,以便可以在任何地方定义它,但会等到文档加载完成后才执行。为此,您可以使用 jQuery 的 $(document).ready(),或者如果您没有 jQuery,请参阅此 SO question对于其他等效选项

关于javascript - KnockOut js脚本标签不应用数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45513735/

25 4 0