問題タブ [knockout-viewmodel-plugin]

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

knockout.js - Knockout.js はビュー モデルを更新します

ページの読み込み時に、JSONデータをこのようなビューモデルに変換しています

ページが読み込まれた後、このビュー モデルを更新するために ajax サーバー関数を呼び出しています。

tha ajaxサクセスコールバックでは、私は次のように書いています

この更新されたモデルでビュー モデルを更新しようとすると、モデル全体が空白になります

私は次の方法を試しました

  1. data.d を oldModel.availables オブザーバブルにプッシュしました。データをプッシュすると、配列オブジェクトはオブザーバブルとして変換されませんが、アイテムは availables 配列に追加されました。最初 (ページの読み込み中) では、オブジェクトは問題なく変換されました。

  2. ビューモデルを直接更新しようとしましたが、この場合、モデル全体が空白になります

    ko.viewmodel.updateFromModel(oldModel, updatedModel);

古いモデルの切り取り

古いモデル

更新されたモデルの抜粋

更新されたモデル

私が言ったように、配列オブジェクトを直接プッシュしたとき (data.d)、オブザーバブルは ajax の前の最初のケースのように自動的に作成されません。

ロジックが同じであるのに、なぜこれが起こっているのですか? オブジェクトを自動的にマッピングするためにhttp://coderenaissance.github.io/knockout.viewmodel/を使用しています。

どんなポインタも役に立ちます

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

json - ノックアウト ビューモデル プラグインを使用する場合、ノックアウト ビューモデルを拡張するにはどうすればよいですか?

knockout.viewmodelプラグイン ( http://coderenaissance.github.io/knockout.viewmodel/ ) を使用して、WebAPI経由で返されたJSONからその場でviewModelを生成しています。ただし、 viewModel の拡張に問題があります。 これが私のテストスクリプトのサンプルです:

JSON:

マークアップ:

JavaScript:

JSONは適切に処理およびバインドされますが、拡張機能は接続されません。
例外はありません。アラートは発生しません。
どんな洞察も大歓迎です。

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

knockout.js - knockout.viewmodel プラグインを使用する場合、拡張メソッドで viewModel を適切に参照するにはどうすればよいですか?

ビューモデルを拡張しています。addEmployeeビューモデルを適切に参照するようにメソッドを実装する必要があります。

これは私がこれまでに持っているものです:

JSON:

JavaScript:

ご支援いただければ幸いです。ありがとう!

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

javascript - ビューモデル間の呼び出し (KnockOutJS)

KnockoutJS を使用して、ビューモデルに基づくプラグインを開発しています。同じアプリケーションで実行されている別のビューモデルの関数とプロパティにアクセスする方法はありますか? このようなもの:

私のビューモデル:

そして他のビューモデル:

otherViewModelのオブザーバブルは、ポップアップやマスクなどの特定の一般的な機能を制御します。myViewModelotherViewModelをインスタンス化し、それらのプロパティを設定する方法はありますか?

または、それらをグローバルに取得および設定する方法はありますか?

私はこのパラダイムに非常に慣れていないので、軽く踏んでください。ありがとうございました。

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

javascript - Boostrap Modal で KnockoutJS のネストされた ViewModels 変数をリセットする

私は Knockout JS を初めて使用し、ブートストラップ モーダルと一緒に使用すると、何時間もの調査にもかかわらず解決できなかった問題に遭遇しました。

ここに私の問題があります:私はネストされたビューモデルを使用していますが、モーダルを表示に設定する直前または直後に、ネストされた vm (監視可能かどうかに関係なく) の変数を更新しようとすると、これら変数は初期値にリセットされます。アイデアを提供するためのサンプルコードを次に示します。

modalB の HTML コードはかなり似ていますが、最初の div にdata-bind="B"タグが追加されています。

ユーザーが ModalA のボタンをクリックすると、ModalA の Show() 関数がトリガーされ、次に AJAX 呼び出しから ModalB のオブザーバブルが取り込まれ、ModalB が表示されるという考え方です。

上記の例では、Show() 関数内から GetData() を呼び出すと、モーダルの読み込みが完了すると、varOne と varTwo が初期値にリセットされます。代わりに、ViewModelB がインスタンス化されたときに (つまり、ModalA の Show 関数がユーザーによって呼び出される前に) GetData() を呼び出すと、新しい値が保持されます。

私はこの数日間、なぜこれが起こっているのか、そしてどのように対処するのが最善なのかを理解しようと頭を悩ませてきました. カスタム バインディング ハンドラ、レンダリング テンプレート、およびブートストラップ モーダル「ロード」イベントの呼び出しについて調べました。

誰かがこのシナリオに出くわしましたか? 前もって感謝します!