ノックアウトウェブアプリに現在の時刻を表示し、毎秒更新したいと思います。私が検討している2つの解決策があります。どのアプローチがより適切かを判断しようとしています。ノックアウトでVMからカスタムバインディングにロジックを移動する方が適切なのはいつですか?
アプローチ1:ビューモデル・ロジック
JS:
vm.currentTime = ko.observable(Date.now());
setInterval(function() {
vm.currentTime(Date.now());
}, 1000);
HTML:
<span data-bind="text: currentTime"></span>
アプローチ2:カスタムバインディング
JS:
vm.getTime = function() {
return Date.now();
};
HTML:結合
<span data-bind="textInterval: { cb: getTime, interval: 1000 }"></span>
textInterval
は、それが本質的に指定された間隔でコールバックを呼び出し、戻り値を持つノードを更新することになる結合習慣です。また、domNodeDisposal
の間隔もクリアされます。
いくつ
は注意する:- 時間を取得するためのロジックが実際に示されるよりも、より複雑で、VMに属していない結合
- ユニットテストは関係なく、アプローチの私たちにとって重要です
私は両方のアプローチの間に大きな差がありません実現が、私はノックアウト哲学の中で最も正しいアプローチでより興味があります。 VMからカスタムバインディングにロジックを移す必要がありますか?