問題タブ [computed-observable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4300 参照

knockout.js - 一連の変数のフォーマットされた値の計算されたオブザーバブルを作成します

ビューモデルに3つの観測可能な変数があり、フォーマットされた値に出力したいと思います。ただし、それらは同一であるため、それぞれの計算メソッドを記述したくありません。コードを再利用するための最良の方法は何ですか?ありがとう。

私が達成しようとしているコードは次のとおりです。

そして失敗した例は次のとおりです:Jsfiddle

ありがとう、

0 投票する
1 に答える
209 参照

knockout.js - 観測された配列がプッシュされたときに、この子計算オブザーバブルが更新されないのはなぜですか?

これを説明する簡単な例があります。単にアイテムの配列を保持するaを取ります。各行には、監視可能なプロパティ(この場合は日付)があります。uiは、ソートされたアイテムのセットにバインドされます。これは、計算されたオブザーバブルです。この計算されたオブザーバブルは、行をフィルターで除外する計算されたオブザーバブルを監視しています。

なぜこれが希望どおりにカスケードされないのですか?

0 投票する
1 に答える
1758 参照

knockout.js - ネストされたデータを初期化した後、ノックアウト計算オブザーバブルが更新されない

HasOpenIssuesネストされたobservableArrayのいずれかのメンバーが条件を満たし、それを機能させることができない場合に更新するUI要素にバインドする計算されたオブザーバブルを実装しようとしています。KO 2.2.0 を使用しています。

私のビューモデルには、 Visitsの observableArray があります。各Visitには ObservableArray のIssueがあります。各Issues配列には、観測可能なIsFixedプロパティを持つIssueのインスタンスを含めることができます。また、Visits配列の最後のVisitを返す、計算された監視可能なLatestVisitもあります。

これらはすべて空で始まりko.applyBindings()、 I の前に、サーバーからいくつかの初期データを取得し、それを引数としてビューモデルに渡します。ビューモデルはそれを使用して、さまざまなオブザーバブルを初期化します。

そのため、プロセスのある時点で、LatestVisit配列Visitsにまだデータが入力されていないため、 も、Issuesその親Visitがまだデータに入力されていないため、配列も確認できません。HasOpenIssues初期化後、これらの構造にはデータが含まれているため、初期データの状態を反映するように更新する必要があります。

次に、ユーザーが に新規を追加IssuesLatestVisit、新規または既存Issuesを としてマークできるようにしますFixed。ですから、私HasOpenIssuesもそれらの変化に対応する必要があります。

HasOpenIssuesビューモデルのルート、Visits配列、Visitプロトタイプ、および計算されたものに直接プロパティとして計算されたものを追加しようとしましたがLatestVisit、何も機能しません。次のようになります。

初期化の前に実行させると、いくつかのバリエーションが得られます

, root, { deferEvaluation: true }または、計算された関数呼び出しに引数を追加すると、

のように() を省略した場合、次のようself.LatestVisit.HasOpenIssuesになります。

遅延オプションを使用しない場合。Issues追加すると初期化でエラーが出なくなりましたが、後で更新しても何も起こりません。

これを実装する方法に関するアドバイスはありますか?

ありがとう!

0 投票する
1 に答える
313 参照

javascript - ko.computed() が最上位オブジェクトを評価しない (ノックアウト マッピング)

ページに 2 つの値があります。1 つは ko.computed プロパティ、もう 1 つは ko.observable です。どちらも同じ値を取得する必要がありますが、2 つの異なる方法で取得する必要があります (基本データは ko.mapping.fromJS を使用して読み込まれます)。

私の場合、#1はうまく機能しますが、#2はまったくトリガーできません。同様に、self.page.subscribe() を使用すると、望ましい結果も得られます。

そして、この問題の 2 番目の部分があります。ネストされたオブジェクトを作成すると、ネストされたオブジェクトに対してケース #1 と #2 が期待どおりに機能しますが、トップ レベル/親オブジェクトにはまだ問題が存在します。

そして、この奇妙な動作を示すサンプルを聞いてください - http://jsfiddle.net/rrgnK/2/

この問題の原因を知りたいのですが、それは私のコード/構造ですか、それとも何か他のものですか? (私がこの方法で解決しようとしている特定の問題はありません。この奇妙な動作に気づいたので、根本的に間違ったことをしている可能性があると思いました)

0 投票する
1 に答える
65 参照

knockout-2.0 - チェックボックスがマークされている場合、id で任意の JavaScript オブジェクトを取得するよりエレガントな方法はありますか?

リスト内のチェックボックスを介してユーザーを選択できるようにしたい。

このサンプルは機能しますが、同じ方法で行うかどうかを知りたいです。

主な問題は、JavaScript の任意のオブジェクトを簡単に比較できないことです。したがって、マッピングが必要です。

これでいいの?バインディングで Id フィールドを定義できるカスタムバインディングを作成したくありません。

}

完全なサンプルはこちら: http://jsbin.com/ukipek/6/edit

ありがとうございました

0 投票する
5 に答える
3328 参照

knockout.js - 計算による依存関係の収集を防止する

次の概念を大まかに達成するための良い方法はありますか?

私は知っていますpeek()が、この場合、計算は外部モジュールから提供されたメソッドを呼び出します。設計では、これらのメソッドにオブザーバブルが含まれる場合、純粋に偶発的なものである必要があります。

私には1つの解決策があります。それは、大まかにこれを行うことです。

しかし、明らかな理由から、それはほとんど理想的ではなく、状況によっては望ましくない動作につながります。

0 投票する
1 に答える
299 参照

javascript - 2つの配列を作成するためのknockout.js計算関数?

ユーザーが検索を実行できるオブジェクトの配列があります。検索に基づいてko.computed関数を使用して、一致するアイテムの別の配列を作成して表示しています。

これはうまく機能し、これまでのパフォーマンスには本当に感銘を受けました。

この問題は、場合によっては(60%の確率で)加算操作を実行する必要があるため、「一致しない」レコードも必要になることです。2番目のko.computed関数を作成したくないのは、検索が実行されるたびにこの配列を2回実行する必要があるためです。

だから、私の質問:同じko.computedを使用して、一致しないアイテムの2番目の配列を作成する方法はありますか?基本的に配列を実行し、各アイテムを一致または不一致の配列に配置します...

そうでない場合は、次の方が高速です。1)ユーザーが検索するときに配列から一致しないアイテムを取得するために2番目のko.computedを作成します。または2)arrayDiff関数を記述し、必要に応じて一致しないアイテムをオンデマンドで判別します。

乾杯!

0 投票する
2 に答える
1162 参照

javascript - JQuery Knockout ComputedObservable Write が ObservableArray に対して呼び出されない

オブザーバブル配列を内部的に使用する計算オブザーバブルをバインドしようとしています。ロード中に「読み取り」メソッドが呼び出されます。ただし、テーブルの値が変更されてフォーカスが移動した場合、「書き込み」メソッドは呼び出されません。配列ではなく単純な文字列をラップする単純な計算されたオブザーバブルの場合、「書き込み」メソッドが機能することに注意してください。ただし、このシナリオでは機能しません。Knockout api のドキュメントとオンライン フォーラムを調べましたが、これについては何も見つかりませんでした。誰かアドバイスをお願いできますか?以下はHTMLコードです

以下はJavaスクリプトコードです

Knockout API ドキュメントに示されている例と同様のコードを配置したので、人々は簡単に関連付けることができます。

0 投票する
2 に答える
1962 参照

knockout.js - knockout.js 計算配列が変更時に起動しない

MVC 4 と Knockout.js で計算された observableArray を使用して編集可能なグリッドを作成しようとしています。配列が最初にロードされたとき、computed() メソッドが呼び出されますが、ユーザーの編集によってグリッド上のデータが変更されたときは呼び出されません。

ビューモデル:

そしてhtmlフラグメント:

グリッド内の最後の Make を編集すると、データ バインドされた car 要素が更新されることを期待していましたが、そうではありません。

ノックアウトobserverableArrayで、onblurイベント中など、グリッドの変更を検出するにはどうすればよいですか?

0 投票する
3 に答える
8223 参照

mvvm - Kendo DataSource: リモート odata ソースから読み取ったデータの「計算済み」プロパティを定義する方法

状況:

  • 剣道データソース

    /li>
  • odata ソースから読み取られた json データは次のようになります。

    /li>

質問 1 :

1.「計算された」プロパティを定義したい場合:OrderedDateRelative、今日(2013-02-25)と注文が作成された日(2013-02-20)の間の日数である必要があります。前に」、クライアント側でこれを達成するにはどうすればよいですか?

質問 1 への回答: http://jsbin.com/ojomul/7/edit

質問 2 --更新--

2.すべての注文にはネストされたプロパティ OrderDetails があるため、ネストされた OrderDetails プロパティの計算フィールドを定義することは可能ですか? のように:各OrderDetailの OrderDetailInfoCAndD で、値はOrderDetailInfoC + OrderDetailInfoDのようなものである必要があります。これは「情報 C 情報 D」ですか?

ありがとう、

ディーン