問題タブ [knockout-3.0]

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 に答える
149 参照

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

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

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

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

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

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

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

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

0 投票する
0 に答える
986 参照

jquery - KnockoutJS: observableArray 内の要素にプログラムでスクロールする

KnockoutJS でリスト項目 (またはそれに関するもの) にスクロールする方法を見つけようとしています。

私が持っているのは、スクロールしたいリストからのオブジェクト/ IDだけです。

以下で達成しようとしていることの機能する(そして簡略化された)バージョンをまとめました。

デモ: http://jsfiddle.net/qczdvkat/

JavaScript:

HTML:

CSS:

上記は機能しますが、MVVMの原則に反するため、私が採用しているjQuery/data-*属性を含まない、よりクリーン/よりKnockoutJSな方法を探しています。

質問の根源は、レンダリングされたリスト/ツリー/など内の特定のオブジェクトからDOM要素を取得する方法?

ここ StackOverflow でいくつかのリソースを見つけましたが、私が見たものからこの特定の問題を解決するものはありませんでした。

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

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

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

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

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

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

0 投票する
0 に答える
78 参照

javascript - Knockout JS: ViewModel 内のカスタム オブジェクトのシリアル化を制御する

私は最近、 KnockoutJS でオブジェクトのシリアライゼーションを制御する優れた方法を概説しているブログ投稿のこの小さな宝石に出くわしました。

ただし、メインの ViewModel でプロパティを形成するカスタム オブジェクトにこの原則を適用しようとしています。

例(参照リンクから持ち上げた部品):

ご覧のとおり、のシリアル化PersonはプロトタイプのtoJSONオーバーライドによって制御されており、これは問題なく機能します。

Personただし、にはカスタムko.educationVariableタイプの 2 つのプロパティがあることにも注意してください。

そのようなすべてのプロパティをそれぞれのオーバーライドによってシリアル化したいと思いますko.educationVariable.prototype.toJSONが、これは機能していません。

このオーバーライド機能は「ネスト」では機能しないように見えるため、すべてのロジックをメイン ViewModel の toJSON オーバーライドに移動する以外に、特定のオブジェクトのすべてのインスタンスのシリアル化を制御する別の方法はありますか?

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 に答える
1205 参照

javascript - knockout.js 3.3 - foreach バインディングでコンポーネントを再レンダリングする

私のviewModelは、観察可能な要素を持つ観察可能な配列で構成されています。

これらの要素の値を変更する必要があります。この目的のために、コンポーネントを作成します。その簡単な例を以下に示します。

このコンポーネントは、params.value に含まれる監視可能な要素の値を変更できます。

私の見解は非常に単純です。

完全な例: http://jsfiddle.net/tselofan/xg16u5cg/7/ 問題は、オブザーバブル配列のオブザーバブル要素の値が変更されたときに、コンポーネントが foreach バインディング内にあるため、再度レンダリングされることです。これはログで確認できます。この状況で使用できるベスト プラクティスは何ですか? ありがとうございました