[解決済み] 計算されたプロパティ関数を強制的に実行させる
2023-07-18 10:25:27
質問
計算されたプロパティがある場合
vm.checkedValueCount = ko.computed(function(){
var observables = getCurrentValues(); //an array of ko.observable[]
return _.filter(observables, function(v) { return v() }).length;
});
は、getCurrentValues()がコードの他の場所で修正されたobservableの異なるセットを返すことができると仮定します(そしてobservableArrayより複雑な構造から来ます)。
私が必要とするのは
checkedValueCount
が更新されるたびに
- 依存関係に変更があった場合
- getCurrentValues() は異なる観測値のセットを返します。
問題は
ko.computed
は最後に返された値を記憶し、依存関係が更新されたときだけ更新するようです。これは、最初のケースを処理しますが、後者のケースは処理しません。
私が探しているのは、checkedValueCountを再実行することを強制する方法です。私が使用できる何かです。
changeCurrentValues();
vm.checkeValueCount.recalculate();
最も簡単に言うと、私が持っている
a = ko.computed(function() { return Math.random() })
を強制的に呼び出すにはどうしたらよいでしょうか?
a()
を二回実行させ、異なる値を返させることができます。
どのように解決するのですか?
私の最初の回答は、あなたのポイントを見逃し、あなたの問題を解決しないことに気づきました。
問題は、computedは再評価を強制するobservableがある場合にのみ再評価されることです。computed を再評価するように強制するネイティブな方法はありません。
しかし、ダミーのobservable値を作成し、それが変更されたことをサブスクライバーに伝えることで、いくつかのハッキングでこれを回避することができます。
(function() {
var vm = function() {
var $this = this;
$this.dummy = ko.observable();
$this.curDate = ko.computed(function() {
$this.dummy();
return new Date();
});
$this.recalcCurDate = function() {
$this.dummy.notifySubscribers();
};
};
ko.applyBindings(new vm());
}());
フィドルはこちら この方法を示す
関連
-
[解決済み] ノックアウト 観測可能な複雑なオブジェクトのあらゆる変化に対応するサブスクライブ
-
[解決済み] ViewModel の boolean プロパティの否定("!")に visible をデータバインディングすることは可能でしょうか?
-
[解決済み] KnockoutJSによるTypeScript
-
[解決済み] 観測可能な配列の中の項目を条件付きでプッシュするには?
-
[解決済み] ノックアウトバインディングでselect時にイベントを変更したいのですが、本当に変更されているかどうかを知るにはどうしたらいいですか?
-
[解決済み] Knockout.js のバインド入力で jquery .val('xyz') を使用すると入力値が更新されない。
-
[解決済み] 同じ観測値のサブスクライブで、その観測値の前回値を取得する。
-
knockoutjsでプレフィックスを含むid属性を設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ノックアウト 観測可能な複雑なオブジェクトのあらゆる変化に対応するサブスクライブ
-
[解決済み] ViewModel の boolean プロパティの否定("!")に visible をデータバインディングすることは可能でしょうか?
-
[解決済み] どのようにすれば、observableから自動的にトリガーされることなく、ビューの更新を強制することができますか?
-
[解決済み] KnockoutJSによるTypeScript
-
[解決済み] 観測可能な配列の中の項目を条件付きでプッシュするには?
-
[解決済み] ノックアウトバインディングでselect時にイベントを変更したいのですが、本当に変更されているかどうかを知るにはどうしたらいいですか?
-
[解決済み] Knockout.js のバインド入力で jquery .val('xyz') を使用すると入力値が更新されない。
-
[解決済み] 同じ観測値のサブスクライブで、その観測値の前回値を取得する。
-
knockoutjsでプレフィックスを含むid属性を設定する