問題タブ [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.

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

knockout.js - コンポーネントに渡されたときに、このオブザーバブルが計算/依存になるのはなぜですか?

私は単純なモデルを持っており、その上に観察可能 (「model.thing」) があります。次に、これに追加のオブザーバブル (「someProp」) を設定し、それをコンポーネントのパラメーターに渡します。

この時点で、オブザーバブルは計算済みになりましたが、その理由はわかりません。

モデルを変更しmodel.thingて、オブザーバブルとして持つのではなく、単純なオブジェクトとして持ってからそれを渡すと、計算されたオブジェクトに変更せずに通過します...

誰かがこの動作について説明していますか?

これが実際の例です(計算されたことを示すパラメーターに警告します)。

http://liveweave.com/MozLiW

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

knockout.js - テンプレートをカスタム ノックアウト バインディングに渡す

ポップオーバー (ブートストラップ) カスタム バインディングを作成したいと思います。

私はこれを次のように定義しました:

問題は、必要な html を挿入する方法がわからないことです。当然、テンプレートのパスを解決したいのですが、作業にはテキストが必要です! プラグインは私が望んでいたほどうまくいきません。

もっと単純なものを見落としていると思いますか?

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

javascript - ノックアウト.jsを使用してネストされたJSONをネストされたリストとして表示する

次のようなネストされた JSON があります。

次のような順不同のリストとしてhtmlページに表示したい: 箇条書きリスト

しかし、最後の項目が複数回繰り返されています。

ここに画像の説明を入力

これは、knockout.js バインディングを含む html です。

testResults上記の JSON を含むビュー モデルの ko.observableArray() です。

リーフ要素を一度だけ表示する正しい方法は何ですか

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

knockout.js - knockout.js で foreach が終了した後にアクションを起動する

このトピックに関するthis questionthis other oneを見てきましたが、どれも私の問題を解決していないようです。

テーブルの各行内の要素の javascript プラグイン (BootStrap javascript ツールチップ) を初期化しようとしています。

そのためには、テーブルを DOM でレンダリングする必要があります。そして、そこが問題です。私の知る限り、knockout.js はforeachテーブル全体をいつレンダリングしたかを知る適切な方法を提供していません。

投稿した最初のリンクで提供されているソリューションを適用して解決しようとしましたが、これはカスタム バインディングを作成することによって行われましたが、私の場合はうまくいきません。AJAX呼び出しからAPIを呼び出してデータを表示しているためだと思います。

問題の再現

afterRenderKnockout.js によって提供されるコールバックをケースに使用しないことをお勧めforeachします。これは、プラグインを最後に 1 回だけではなく、反復ごとに初期化する必要があるためです。

私が見つけた唯一の解決策はsetTimeout、ツールチップ プラグインを適用する前に , を適用することでしたが、理想とはほど遠いものです。

tooltipもう 1 つの解決策は、API からデータを取得した後にプラグインを呼び出すことでした。

それに対するより良いアプローチはありますか?

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

knockout.js - Knockout.js で新しいビュー モデルを作成するタイミング

ノックアウト.jsで複数のビューモデルについて話すとき、一般的に少し混乱があるのを見てきました.

ko のドキュメントでは、複数のビュー モデルを処理する方法、それらの間で通信する方法、またはいつそれらを考慮する必要があるかについて、実際にはあまり説明していません。

このサイトで、複数のビュー モデルを作成するさまざまな方法とそれらを操作する方法を説明していることがわかりました。

試してみて、さまざまなサブモデルを持つマスター モデルを作成しました。

その後、私with: nameOfModelは多くの場所で使用しなければならない (そして追加のラッパーや HTML コメントを作成する必要がある) か、ビューモデルの名前をプレフィックスとして使用する必要さえあることに気付きましたdata-bind="foreach: orders.getList()"

それに加えて、それらの間の通信の問題があり、何とか解決できますが、単一のビュー モデルを扱う場合ほど単純ではないようです。

私の質問は、複数のビュー モデルを作成する価値はありますか? もしそうなら、いつ?それはより多くの困難を追加するだけのようで、私はそれの利点を見ることにはなりません. (ええ、彼らはそれがモジュール性を維持していると言っています...しかし、私は明確な利点を見出すことにはなりません)

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

knockout.js - knockout.js (valueUpdate) で入力変更時に関数を呼び出す

入力値が更新されたときに関数を呼び出そうとしています。関数は入力値を検証し、DOM の複数の要素で使用される true または false にフラグを設定します。

ここで提案されたソリューションを試しています:

しかし、afterKeyDown では動作しないようです。ここでわかるように、フォーカスを外したときにのみ関数を呼び出します: http://jsfiddle.net/imac/hY5T2/142/

私は何を間違っていますか?

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

knockout.js - knockout.js で外部のマスター ビュー モデルから関数を呼び出す

それについて同様 のトピックを見たことがありますが、私とまったく同じ構造を使用しているものはありません。

私は複数のビュー モデルを使用しており、MasterModel 関数を作成してこれを処理します。これを後で に引数として渡しますapplyBindings

基本的には次のようなものです:

現在、Javascript からビュー モデルの 1 つ内の関数にアクセスできるようにしたいと考えていますが、問題が発生しています。

これに変更すると、viewmodel関数を呼び出すことができましたapplyBindings

しかし、その後、次のようなことが機能しなくなることがわかりました。

メッセージ: 部門が定義されていません

オンラインでの複製

ここでわかるように、使用すると完全に機能しますko.applyBindings(MasterModel);

これに対する解決策はありますか?

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

knockout.js - knockout.js の配列内に監視可能なオブジェクト プロパティを作成する

Knockout.js docs は次のように述べていますobservableArray

オブジェクトを単に observableArray に入れるだけでは、そのオブジェクトのすべてのプロパティ自体が監視可能になるわけではありません。もちろん、必要に応じてこれらのプロパティを監視可能にすることもできますが、それは独立した選択です。

ただし、プロパティを監視可能にする方法は指定されていません。

の配列があり、何らかのアクションで別のビューモデルから変更できるようにusers、プロパティを監視可能にしたいと考えています。name

これは私が成功せずに試したことです:

オンラインでの複製

どうすればできますか?

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

knockout.js - ノックアウト.jsでビュー/テンプレートを動的にロードする

テーブルがあり、2 つの異なる方法で表示したいと考えています。列の数と、コンテンツとセルの位置が異なります。ボタンをクリックするだけで、あるビューから別のビューに変更できる方法をユーザーに提供したいと考えています。

visibleバインディングを使用するだけで始めましたが、コンテンツがちょうどinvisibleDOM にロードされていたため、適切な方法ではないことに気付きました。私はバックグラウンドでコンテンツを複製し、無効な HTML を生成していました (idたとえば、両方のテーブルで属性が重複している)、jQuery 側で問題が発生していました。

次に、この例のように、ノックアウト テンプレートを使用してそれを達成する方法を調べました。以前の問題は解決され、機能します、タグ内で HTML を使用することは、私にとって最もクリーンなソリューションとは思えません。<script>

コンポーネントの使用がこのケースの解決策を提供できるかどうかはよくわかりません.1つを見つけることができませんでした.

この問題に対処する方法について何か提案はありますか?