gpt4 book ai didi

javascript - 什么时候将逻辑从 VM 移动到 Knockout 中的自定义绑定(bind)更合适?

转载 作者:行者123 更新时间:2023-11-29 21:04:34 27 4
gpt4 key购买 nike

我想在我的 Knockout 网络应用程序中显示当前时间并让它每秒更新一次。我正在考虑 2 种解决方案,我正在尝试确定哪种方法更合适。

方法 1:查看模型逻辑

JS:

vm.currentTime = ko.observable(Date.now());
setInterval(function () {
vm.currentTime(Date.now());
}, 1000);

HTML:

<span data-bind="text: currentTime"></span>

方法 2:自定义绑定(bind)

JS:

vm.getTime = function () {
return Date.now();
};

HTML:

<span data-bind="textInterval: { cb: getTime, interval: 1000 }"></span>

textInterval 绑定(bind)是一个自定义绑定(bind),它基本上会在指定的时间间隔调用回调并使用返回值更新节点。它还会清除 domNodeDisposal 上的间隔。

一些注意事项:

  • 获取时间的逻辑实际上比显示的更复杂并且属于 VM 而不是绑定(bind)
  • 无论采用何种方法,单元测试对我们都很重要

我意识到这两种方法之间没有太大区别,但我对 Knockout 理念中最正确的方法更感兴趣。何时应将逻辑从 VM 移至自定义绑定(bind)?

最佳答案

documentation

[Creating a custom binding] is how to control how observables interact with DOM elements, and gives you a lot of flexibility to encapsulate sophisticated behaviors in an easy-to-reuse way.

当您需要告诉 Knockout 您希望它如何与 DOM 元素交互时,请使用自定义绑定(bind)。这通常用于其他工具包提供的小部件或您想要自己创建的专用小部件。如果您不需要操作 DOM 元素,您可能不需要自定义绑定(bind)。

关于javascript - 什么时候将逻辑从 VM 移动到 Knockout 中的自定义绑定(bind)更合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44681509/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com