問題タブ [knockout-3.2]
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 - コンポーネントに渡されたときに、このオブザーバブルが計算/依存になるのはなぜですか?
私は単純なモデルを持っており、その上に観察可能 (「model.thing」) があります。次に、これに追加のオブザーバブル (「someProp」) を設定し、それをコンポーネントのパラメーターに渡します。
この時点で、オブザーバブルは計算済みになりましたが、その理由はわかりません。
モデルを変更しmodel.thing
て、オブザーバブルとして持つのではなく、単純なオブジェクトとして持ってからそれを渡すと、計算されたオブジェクトに変更せずに通過します...
誰かがこの動作について説明していますか?
これが実際の例です(計算されたことを示すパラメーターに警告します)。
knockout.js - テンプレートをカスタム ノックアウト バインディングに渡す
ポップオーバー (ブートストラップ) カスタム バインディングを作成したいと思います。
私はこれを次のように定義しました:
問題は、必要な html を挿入する方法がわからないことです。当然、テンプレートのパスを解決したいのですが、作業にはテキストが必要です! プラグインは私が望んでいたほどうまくいきません。
もっと単純なものを見落としていると思いますか?
javascript - ノックアウト.jsを使用してネストされたJSONをネストされたリストとして表示する
次のようなネストされた JSON があります。
次のような順不同のリストとしてhtmlページに表示したい:
しかし、最後の項目が複数回繰り返されています。
これは、knockout.js バインディングを含む html です。
testResults
上記の JSON を含むビュー モデルの ko.observableArray() です。
リーフ要素を一度だけ表示する正しい方法は何ですか
knockout.js - knockout.js で foreach が終了した後にアクションを起動する
このトピックに関するthis questionとthis other oneを見てきましたが、どれも私の問題を解決していないようです。
テーブルの各行内の要素の javascript プラグイン (BootStrap javascript ツールチップ) を初期化しようとしています。
そのためには、テーブルを DOM でレンダリングする必要があります。そして、そこが問題です。私の知る限り、knockout.js はforeach
テーブル全体をいつレンダリングしたかを知る適切な方法を提供していません。
投稿した最初のリンクで提供されているソリューションを適用して解決しようとしましたが、これはカスタム バインディングを作成することによって行われましたが、私の場合はうまくいきません。AJAX呼び出しからAPIを呼び出してデータを表示しているためだと思います。
afterRender
Knockout.js によって提供されるコールバックをケースに使用しないことをお勧めforeach
します。これは、プラグインを最後に 1 回だけではなく、反復ごとに初期化する必要があるためです。
私が見つけた唯一の解決策はsetTimeout
、ツールチップ プラグインを適用する前に , を適用することでしたが、理想とはほど遠いものです。
tooltip
もう 1 つの解決策は、API からデータを取得した後にプラグインを呼び出すことでした。
それに対するより良いアプローチはありますか?
knockout.js - Knockout.js で新しいビュー モデルを作成するタイミング
ノックアウト.jsで複数のビューモデルについて話すとき、一般的に少し混乱があるのを見てきました.
ko のドキュメントでは、複数のビュー モデルを処理する方法、それらの間で通信する方法、またはいつそれらを考慮する必要があるかについて、実際にはあまり説明していません。
このサイトで、複数のビュー モデルを作成するさまざまな方法とそれらを操作する方法を説明していることがわかりました。
試してみて、さまざまなサブモデルを持つマスター モデルを作成しました。
その後、私with: nameOfModel
は多くの場所で使用しなければならない (そして追加のラッパーや HTML コメントを作成する必要がある) か、ビューモデルの名前をプレフィックスとして使用する必要さえあることに気付きましたdata-bind="foreach: orders.getList()"
。
それに加えて、それらの間の通信の問題があり、何とか解決できますが、単一のビュー モデルを扱う場合ほど単純ではないようです。
私の質問は、複数のビュー モデルを作成する価値はありますか? もしそうなら、いつ?それはより多くの困難を追加するだけのようで、私はそれの利点を見ることにはなりません. (ええ、彼らはそれがモジュール性を維持していると言っています...しかし、私は明確な利点を見出すことにはなりません)
knockout.js - knockout.js (valueUpdate) で入力変更時に関数を呼び出す
入力値が更新されたときに関数を呼び出そうとしています。関数は入力値を検証し、DOM の複数の要素で使用される true または false にフラグを設定します。
ここで提案されたソリューションを試しています:
しかし、afterKeyDown では動作しないようです。ここでわかるように、フォーカスを外したときにのみ関数を呼び出します: http://jsfiddle.net/imac/hY5T2/142/
私は何を間違っていますか?
knockout.js - knockout.js で外部のマスター ビュー モデルから関数を呼び出す
それについて同様 のトピックを見たことがありますが、私とまったく同じ構造を使用しているものはありません。
私は複数のビュー モデルを使用しており、MasterModel 関数を作成してこれを処理します。これを後で に引数として渡しますapplyBindings
。
基本的には次のようなものです:
現在、Javascript からビュー モデルの 1 つ内の関数にアクセスできるようにしたいと考えていますが、問題が発生しています。
これに変更すると、viewmodel関数を呼び出すことができましたapplyBindings
:
しかし、その後、次のようなことが機能しなくなることがわかりました。
メッセージ: 部門が定義されていません
ここでわかるように、使用すると完全に機能しますko.applyBindings(MasterModel);
これに対する解決策はありますか?
knockout.js - knockout.js の配列内に監視可能なオブジェクト プロパティを作成する
Knockout.js docs は次のように述べていますobservableArray
オブジェクトを単に observableArray に入れるだけでは、そのオブジェクトのすべてのプロパティ自体が監視可能になるわけではありません。もちろん、必要に応じてこれらのプロパティを監視可能にすることもできますが、それは独立した選択です。
ただし、プロパティを監視可能にする方法は指定されていません。
の配列があり、何らかのアクションで別のビューモデルから変更できるようにusers
、プロパティを監視可能にしたいと考えています。name
これは私が成功せずに試したことです:
どうすればできますか?
knockout.js - ノックアウト.jsでビュー/テンプレートを動的にロードする
テーブルがあり、2 つの異なる方法で表示したいと考えています。列の数と、コンテンツとセルの位置が異なります。ボタンをクリックするだけで、あるビューから別のビューに変更できる方法をユーザーに提供したいと考えています。
visible
バインディングを使用するだけで始めましたが、コンテンツがちょうどinvisible
DOM にロードされていたため、適切な方法ではないことに気付きました。私はバックグラウンドでコンテンツを複製し、無効な HTML を生成していました (id
たとえば、両方のテーブルで属性が重複している)、jQuery 側で問題が発生していました。
次に、この例のように、ノックアウト テンプレートを使用してそれを達成する方法を調べました。以前の問題は解決され、機能しますが、タグ内で HTML を使用することは、私にとって最もクリーンなソリューションとは思えません。<script>
コンポーネントの使用がこのケースの解決策を提供できるかどうかはよくわかりません.1つを見つけることができませんでした.
この問題に対処する方法について何か提案はありますか?