問題タブ [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.
knockout.js - Knockout.js で新しいビュー モデルを作成するタイミング
ノックアウト.jsで複数のビューモデルについて話すとき、一般的に少し混乱があるのを見てきました.
ko のドキュメントでは、複数のビュー モデルを処理する方法、それらの間で通信する方法、またはいつそれらを考慮する必要があるかについて、実際にはあまり説明していません。
このサイトで、複数のビュー モデルを作成するさまざまな方法とそれらを操作する方法を説明していることがわかりました。
試してみて、さまざまなサブモデルを持つマスター モデルを作成しました。
その後、私with: nameOfModel
は多くの場所で使用しなければならない (そして追加のラッパーや HTML コメントを作成する必要がある) か、ビューモデルの名前をプレフィックスとして使用する必要さえあることに気付きましたdata-bind="foreach: orders.getList()"
。
それに加えて、それらの間の通信の問題があり、何とか解決できますが、単一のビュー モデルを扱う場合ほど単純ではないようです。
私の質問は、複数のビュー モデルを作成する価値はありますか? もしそうなら、いつ?それはより多くの困難を追加するだけのようで、私はそれの利点を見ることにはなりません. (ええ、彼らはそれがモジュール性を維持していると言っています...しかし、私は明確な利点を見出すことにはなりません)
jquery - KnockoutJS: observableArray 内の要素にプログラムでスクロールする
KnockoutJS でリスト項目 (またはそれに関するもの) にスクロールする方法を見つけようとしています。
私が持っているのは、スクロールしたいリストからのオブジェクト/ IDだけです。
以下で達成しようとしていることの機能する(そして簡略化された)バージョンをまとめました。
デモ: http://jsfiddle.net/qczdvkat/
JavaScript:
HTML:
CSS:
上記は機能しますが、MVVMの原則に反するため、私が採用しているjQuery/data-*属性を含まない、よりクリーン/よりKnockoutJSな方法を探しています。
質問の根源は、レンダリングされたリスト/ツリー/など内の特定のオブジェクトからDOM要素を取得する方法?
ここ StackOverflow でいくつかのリソースを見つけましたが、私が見たものからこの特定の問題を解決するものはありませんでした。
knockout.js - knockout.js (valueUpdate) で入力変更時に関数を呼び出す
入力値が更新されたときに関数を呼び出そうとしています。関数は入力値を検証し、DOM の複数の要素で使用される true または false にフラグを設定します。
ここで提案されたソリューションを試しています:
しかし、afterKeyDown では動作しないようです。ここでわかるように、フォーカスを外したときにのみ関数を呼び出します: http://jsfiddle.net/imac/hY5T2/142/
私は何を間違っていますか?
javascript - Knockout JS: ViewModel 内のカスタム オブジェクトのシリアル化を制御する
私は最近、 KnockoutJS でオブジェクトのシリアライゼーションを制御する優れた方法を概説しているブログ投稿のこの小さな宝石に出くわしました。
ただし、メインの ViewModel でプロパティを形成するカスタム オブジェクトにこの原則を適用しようとしています。
例(参照リンクから持ち上げた部品):
ご覧のとおり、のシリアル化Person
はプロトタイプのtoJSON
オーバーライドによって制御されており、これは問題なく機能します。
Person
ただし、にはカスタムko.educationVariable
タイプの 2 つのプロパティがあることにも注意してください。
そのようなすべてのプロパティをそれぞれのオーバーライドによってシリアル化したいと思いますko.educationVariable.prototype.toJSON
が、これは機能していません。
このオーバーライド機能は「ネスト」では機能しないように見えるため、すべてのロジックをメイン ViewModel の toJSON オーバーライドに移動する以外に、特定のオブジェクトのすべてのインスタンスのシリアル化を制御する別の方法はありますか?
knockout.js - knockout.js で外部のマスター ビュー モデルから関数を呼び出す
それについて同様 のトピックを見たことがありますが、私とまったく同じ構造を使用しているものはありません。
私は複数のビュー モデルを使用しており、MasterModel 関数を作成してこれを処理します。これを後で に引数として渡しますapplyBindings
。
基本的には次のようなものです:
現在、Javascript からビュー モデルの 1 つ内の関数にアクセスできるようにしたいと考えていますが、問題が発生しています。
これに変更すると、viewmodel関数を呼び出すことができましたapplyBindings
:
しかし、その後、次のようなことが機能しなくなることがわかりました。
メッセージ: 部門が定義されていません
ここでわかるように、使用すると完全に機能しますko.applyBindings(MasterModel);
これに対する解決策はありますか?
knockout.js - knockout.js の配列内に監視可能なオブジェクト プロパティを作成する
Knockout.js docs は次のように述べていますobservableArray
オブジェクトを単に observableArray に入れるだけでは、そのオブジェクトのすべてのプロパティ自体が監視可能になるわけではありません。もちろん、必要に応じてこれらのプロパティを監視可能にすることもできますが、それは独立した選択です。
ただし、プロパティを監視可能にする方法は指定されていません。
の配列があり、何らかのアクションで別のビューモデルから変更できるようにusers
、プロパティを監視可能にしたいと考えています。name
これは私が成功せずに試したことです:
どうすればできますか?
javascript - knockout.js 3.3 - foreach バインディングでコンポーネントを再レンダリングする
私のviewModelは、観察可能な要素を持つ観察可能な配列で構成されています。
これらの要素の値を変更する必要があります。この目的のために、コンポーネントを作成します。その簡単な例を以下に示します。
このコンポーネントは、params.value に含まれる監視可能な要素の値を変更できます。
私の見解は非常に単純です。
完全な例: http://jsfiddle.net/tselofan/xg16u5cg/7/ 問題は、オブザーバブル配列のオブザーバブル要素の値が変更されたときに、コンポーネントが foreach バインディング内にあるため、再度レンダリングされることです。これはログで確認できます。この状況で使用できるベスト プラクティスは何ですか? ありがとうございました