問題タブ [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 投票する
2 に答える
18673 参照

javascript - 値が変更されたときに、koがobservableを計算してバインドされたUI要素を更新しないのはなぜですか?

計算されたオブザーバブル(後でprotectedObservableに変換します)でCookieをラップしようとしていますが、計算されたオブザーバブルに問題があります。計算されたオブザーバブルへの変更は、それにバインドされているすべてのUI要素にブロードキャストされると私は考えていました。

私は次のフィドルを作成しました

JavaScript

HTML

オブザーバブルを使用して保存することはありませんprivateZipcode。これは、実際にはCookieに含まれるためです。私が見た例のほとんどはカバーの下を使用することko.computedになりますが、が必要な通知とバインディング機能を提供することを望んでいます。ko.computedko.observable

計算されたオブザーバブルに値を書き込むという行為は、その値にバインドされているUI要素に信号を送るべきではありませんか?これらはただ更新するべきではありませんか?

回避策

簡単な回避策がありko.observableます。Cookieストアと一緒に使用すると、DOM要素に必要な更新がトリガーされますがko.computed、シグナリング/依存関係タイプの機能がない場合を除いて、これは完全に不要のようko.observableです。

私の回避策のフィドルですが、変更されるのは、ストアとして使用されていないを追加したseperateObservableことだけです。その唯一の目的は、基になるデータが変更されたことをUIに通知することです。

これは理にかなっており、私が期待するとおりに機能します。これは、UIにviewModel.zipcode依存しseperateObservableて更新することで、UIに更新を通知する必要があるためです。 私が理解していないのは、その要素がそれにバインドされているので、なぜwrite私のシグナルの関数を呼び出してko.computedUIを更新しないのko.computedですか?

ノックアウトで何かを使用して、自分ko.computedが更新されたことを手動で通知する必要があるのではないかと思ったのですが、それで問題ありません。それは理にかなっています。私はそれを達成する方法を見つけることができませんでした。

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

knockout.js - 親プロパティがnullの場合でも、計算値は常に真の値を返します

koマッピングプラグインを使用して、JSオブジェクトからオブザーバブルを作成していますko.mapping.fromJS()

オブジェクトのスニペットは以下のとおりです。

変更するとParent.Title、ページのすべてが期待どおりに更新されますが、Parentnullになると問題が発生します。プロパティを使用する簡略化されたマークアップはParent次のようになります。

HasParentこのように見えます:

ParentTitleこのように見えます:

注:selfは、から戻った結果に設定され、ko.mapping.fromJS()を呼び出すことによってページに適用されますko.applyBindings();

したがって、基本的に私の問題は、HasParent関数が常に真の値を返すことです。

また、これは私の最初のkoプロジェクトなので、もっと良い方法で何かできることがあれば教えてください:)

どんな助けでもいただければ幸いです。

ありがとう。

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

data-binding - 変数を使用した knockout.js 動的フィールド バインディング

ko.computed で読み書きされるフィールドを動的に置き換える方法はありますか? たとえば、この関数では、self.JobStartDate を、渡すことができる変数フィールド名に置き換えたいと考えています。

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

javascript - ノックアウトでの再利用可能な計算フィールド

マッピングプラグインを使用するKnockoutViewmodelがあります。JSONオブジェクトをマッピングした後、次のような計算値を作成します。

コードが何をするかについてはそれほど心配しないでください。私はパターンにもっと関心があります。ご覧のとおり、2つのプロパティformattedGiftAmount()formattedGoal()は、それらを定義するほぼ同一のオブジェクトがあります。唯一の違いは、変更するプロパティです。このようなインスタンスがさらに増える可能性があるので、これをより再利用可能にする方法があるかどうか疑問に思いました。のようなことを想像することはthis[prop]()できますが、それをオブジェクトに注入して機能させる方法を完全に理解することはできません。

PS:私はこれを見ましたが、それでも私が探しているものを完全には実行しません。

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

jquery - Knockoutjs で ko.computed() を使用できないのはなぜですか?

.computed() を使用すると、この問題が発生しました。

ここに私のHTMLコードがあります:

</p>

そして、ここに私のスクリプトコードがあります:

何がエラーのように見えるのか本当にわかりません。助けてください。前もって感謝します。

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

knockout.js - Knockoutで計算された監視可能な配列を作成する方法

計算された監視可能な配列を作成する方法を知りたいです。

私のビューモデルには、2つの監視可能な配列があり、両方の配列を単純に組み合わせた、計算された監視可能な配列が必要です。

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

knockout.js - ノックアウト: 計算されたオブザーバブル vs 関数

ノックアウトを使用する場合、単純な関数ではなく読み取り専用の計算されたオブザーバブルを使用する利点は何ですか?

たとえば、次のビューモデル コンストラクターと html スニペットを見てみましょう: </p>

ここにあるものはすべて期待どおりに機能しているように見えるので、代わりに使用する必要がある理由はありますか:

http://knockoutjs.com/documentation/computedObservables.htmlのドキュメントには、「...宣言型バインディングは計算されたオブザーバブルとして単純に実装される」と記載されていることに気付きました。これは、ビューモデルで明示的に使用する必要があることを意味しますか? ?

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

list - knockout - 配列内の値を減算します

以下の点で少し困っています。ノックアウトを使用して、ネストされたリストを含むリストを編集しています。これは、ノックアウト Web サイトの連絡先エディターに少し似ています。

http://knockoutjs.com/examples/contactsEditor.html

次の例では、「designs」は上記の例の「連絡先」に関連し、「designDeliveries」は「電話番号」に関連しています。

したがって、各「デザイン」内に MaxQuantity と呼ばれる値と、各「designDelivery」内に Quantity と呼ばれる値があります。事実上、私が達成しようとしているのは、特定の「デザイン」に関連するすべての「designDeliveries」の「MaxQuantity」から「Quantity」の合計を差し引いた「Remaining」と言う「残り」と呼ばれる各「デザイン」に別の値を持つことです。 "。新しい「designDeliveries」を追加して「Quantity」フィールドに入力すると、もちろん、これはその特定のデザインの新しい「Remaining」値から差し引かれます。

これまでのところ、私は以下のコードを持っています:

initialData は次のようになります。

そして、次のようなhtml:

これが十分に明確であることを願っています。これを達成する方法を知っている人はいますか?

前もって感謝します

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

knockout.js - Knockoutjs +ko.mapping.fromJS+計算フィールドは計算されません計算されます

私はこれをやろうとします:

初めて-ロード後-computedWeightは正しく計算されます。しかし、weightまたはanotherWeightフィールドを変更しても、calculatedWeightは変更されません。
ありがとう。