問題タブ [knockout-subscribe]
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.
knockout.js - ノックアウト サブスクライブが予期せず評価される
値が更新されたときのタイムスタンプが必要です。ここでは説明しませんが、これはオブザーバブルvalue
を指す書き込み可能な計算されたものvalueInstance
であるため、基本的に同じデータが表示されます。
オブザーバブルをサブスクライブすると、期待どおりに機能し、オブザーバブルが変更されたときにのみ起動します。計算されたものにサブスクライブすると、オブザーバブルがまだ未定義であっても、すぐに起動して誤ったタイムスタンプが発生します。これどうしたの?
更新:これは、計算されたdeferEvaluation: true
jquery - DOM の更新後にトリガーするようにノックアウト サブスクライブする
dom が更新された後にトリガーされるサブスクライブを処理するにはどうすればよいですか? 「偶数」のcssクラスを与えることにより、テーブルの偶数の表示行を更新するjQueryを実行しようとしています。carsOnly
サブスクライブ機能は、車のアイテムのみを表示するかどうか、またはすべてのアイテムを表示するかどうかを切り替えるプロパティの変更をリッスンしています。
問題:私のサブスクライブでは、DOM が更新される前に偶数行の CSS を設定する jQuery が実行されるため、行に「偶数」クラスが追加され、DOM が最終的に更新されるとすぐに非表示になります。
HTML:
J:
CSS:
knockout.js - Knockout subscribe を使用した循環依存関係
Knockout.js subscribe を使用して循環依存に直面している以下のコードを修正することはできますか?
ここで、「self」は「this」のエイリアスであり、observable1 はコンボ ボックスにリンクされ、observable2 は日付ピッカーにリンクされています。
よろしくお願いします
knockout.js - 値が変更されない場合に Knockout サブスクライブを強制的に実行するにはどうすればよいですか?
家の住所を選択するために使用される一連のカスケード ドロップダウン リストがあります。アドレスを次の順序で分割します。
- 通りの名前 (例: 10th、11th、Main)
- 番地のサフィックス (St、Ave など)
- 通りの方向
- 番地(番地)
ノックアウトを使用して、REST クエリを介してデータベースからプルされるドロップダウンの値を生成しています。単一のエッジケースを除いて、これはうまく機能しています。
最初に、アドレスについて少し説明させてください (アドレスがこのようにばらばらになっている場合)。必ず通りの名前があり、通りの番号があります。接尾辞と方向は常に使用されるわけではありません。したがって、100 Savanna South (Savanna South は通りの名前)、または 101 Main St となる可能性があります。これらのシナリオは、接尾辞と方向が変わると仮定して機能します。
問題は、10 番目から 11 番目に切り替えるときです。どちらも「Street」のサフィックスしかなく、どちらも「West」の 1 つの方向しかありません。変更を行っても、サフィックスと方向は変更されず、次のデータ セットを取得するための適切なサブスクライブがトリガーされません。したがって、10 番目から 11 番目に変更しても、番地は更新されません。
フィールドでjQuery$.trigger('change')
を実行することから、上記の追加で表示されるものまで、いくつかのことを試してきました.valueHasMutated()
。通りの名前が変更されたかどうかを確認するための精巧なコードを書くことができましたが、サフィックスと方向は変更されていませんでした。その後、番地を再ロードしましたが、可能であればサブスクライブ フレームワーク内にとどめようとしています。
関数をトリガーするか、.subscribe()
別のアプローチを取る方法を正しい方向に向けることができますか?
注: REST エンドポイントがプライベート ネットワークにあり、公開されていないことを考えると、JSFiddle を実行することはできません。そうでなければ、私はそれを提供します。
javascript - Knockout の監視可能な配列要素に対応する DOM 要素を特定するにはどうすればよいですか?
私のモデル内には、観察可能な要素を持つオブジェクト配列があります。次のドロップダウン (カスケード ドロップダウン) に入力するために、これらの要素 (ドロップダウン リスト) の 1 つを購読しています。これらのドロップダウンで選択した値の説明を取得する必要があります。ドロップダウンリストからその値を取得するにはどうすればよいですか? 可能であれば、サーバーに対してクエリを実行しないようにしています。
過去に行ったことはありますself.deptName($('#AssignedDepartment option:selected').text());
が、現在、このドロップダウンは一意ではありません。たくさんの中から選ぶことができました。uniqueName: true
各フィールドで使用しています。サブスクライブ内で、どのドロップダウンが変更されたかをどのように判断しますか?
私のサブスクライブは次のようになります。
ドロップダウンの HTML は次のとおりです。
これが bindingHandler です。
更新 1:混乱があるため。ドロップダウンリストで「Vacation」というテキストを含む値「VAC」を選択した場合。モデルに "Vacation" というテキストを入れるにはどうすればよいですか?
更新 2:これは、上記の (ほとんどの) 作業コードを含む jsFiddle です。http://jsfiddle.net/MikeWills/cykuqxto/6/何らかの理由で、読み込み時にドロップダウンが機能しませんが、別の日を追加すると、機能するドロップダウンが表示されます。