2

ここにこのコードがあります

self.timestamp = ko.observable(data.timestamp);
self.dateFromNow = ko.computed(function ()
{
    return moment(self.timestamp()).fromNow();
}, self);

self.timestamp単なるUNIXタイムスタンプです

self.dateFromNow44 years agoまたはのように見えます1 minute ago

私の目標は、self.dateFromNow設定された時間間隔ごとに再計算することです。

これらのプロパティは HTML<time>要素にバインドされていますが、要素を調べて再計算するために JS/jQuery を使用して再計算を行いたくありません。より良い方法は、設定された時間間隔ごとに KnockoutJS の値を単純に再計算し、KO にマークアップを更新させることだと思います。

KnockoutJS でこれを行う方法はありますか?

更新:私がしたことは、ポスターの答えの代わりにこのようなものでした

setInterval(function() {
  $.each(self.foo(), function(index, item) {
    item.timestamp.notifySubscribers();
  });
}, 60 * 1000); // 60 * 1000 milsec
4

2 に答える 2

1

ノックアウトには組み込まれていません (少なくとも、私が知る限り)。ビューモデルの変更が反映される頻度を制限するメカニズム (スロットリング) がありますが、明らかにそれはあなたが求めているものではありません。おそらく、要素にバインドするビュー モデルにメンバーが必要であり、ビュー モデルを定期的に更新するのはあなたの責任です。

于 2013-09-25T01:13:30.033 に答える