5

ノックアウト.jsで決定する方法はありますか

  • どの値 (ko.observableまたはko.computed) がどのように相互に依存しているか (前例/従属関係) および
  • どの HTML ノード (手始めに、テキスト バインディング) は現在の値1に依存するため、画面上でそれらを強調表示できます。

?

1これ は、ビュー モデルだけでなく、HTML ノードから接続された に移動する方法が必要であることを意味します。これも無理そうです。ko.subscribableko.dataFor()


スプレッドシートのように機能する Web アプリケーションを作成しました。これは、一連のビジネス ルールに従って相互に基づいた多数の数値です。計算されたものもあれば、ユーザーが提供したものもあります。

現時点では、すべての依存関係の追跡と動的な画面更新を行う独自の JS ライブラリを使用しています。これは機能しますが、汎用性とエレガンスを追加するために、knockout.js に置き換えたいと思います。

Knockout は、この情報をどこかに追跡します。どのように使用できますか?


たとえば、いくつかの整数を合計するスプレッドシート (HTML テーブル) を想像してください。

  | | ABC
--+---------
1 | 4 1 5
2 | 2
3 | 3 8
  • ユーザーがセル B3 をクリックすると、それが B1 と B2 に依存し、C3 がそれに依存していることを確認したいと思います。
  • ユーザーがセル C3 をクリックすると、それが A1、B1、C1、B2、および B3 に依存していることを確認したいと思います。
4

2 に答える 2

7

Knockout (2.0+)のプラグインを作成しました。その主な目的は、計算されたオブザーバブルの重複する更新を排除することです。ただし、プラグインがko.computedオブジェクトを置き換えるため、オブザーバブルの依存関係/依存関係のリストを取得する機能も追加しました。各計算オブジェクトには、getDependenciesオブザーバブルの配列を返すメソッドがあり、各オブザーバブル/計算されたオブザーバブルには、getDependents計算されたオブザーバブルの配列を返すメソッドがあります。

于 2012-06-20T02:46:16.443 に答える
4

これは非常に興味深い質問です。答えるのは簡単ではないようです。ノックアウト ソースを調べたところ、このデータは_subscriptionsToDependenciesプロパティに保存されているようですが、公開されていないようです。

どれが公開されているかに気付きました-このフィドルgetDependenciesCountをチェックして、実際に動作していることを確認してください。

これについてはまだ調査中ですが、基礎となるオブザーバブルを取得できない限り、ノックアウト自体のフォークが必要になる可能性があるようです。しかし、これまでに私が見つけたものは次のとおりです。

デバッガーで実行すると、実行時にノックアウトの縮小版が_subscriptionsToDependenciesプロパティの名前を に変更するようVです。実行時のgetDependenciesCountプロパティの値は次のとおりです。function (){return v.length}

これが役立つことを願っています。

編集:答えを探してこの質問にたどり着いた人にとっては、バージョン2.1の時点でKnockoutJSでは可能ではないようです

于 2012-06-18T16:15:15.623 に答える