問題タブ [knockout-mapping-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.
javascript - Knockout.jsすべてのネストされたオブジェクトを監視可能にします
Knockout.jsをMVVMライブラリとして使用して、データをいくつかのページにバインドしています。現在、WebサービスへのREST呼び出しを行うためのライブラリを構築しています。私のRESTfulWebサービスは、単純な構造を返します。
私には観察可能な主な親がいmyObject
ます。私がする時
のオブザーバブルは次のmyObject
とおりです。
id
name
surname
どうすればdetails
(そして理論的には構造内の任意のオブジェクトを観察可能にすることができますか)?この動作が必要なのは、詳細に計算されたオブザーバブルを設定し、内部データのいずれかが変更されるとすぐに通知されるようにするためです。
トリックを実行する基本的な再帰関数を設定しました。もちろん、それはmyObject.details
観察可能にはなりません。
間違った参照に関するものだと確信していますが、どうすればこれを解決できますか?ありがとうございました。
knockout.js - 観測可能な配列のノックアウトマッピングが機能していないようです
MVCプロジェクトでノックアウト(KO)を使用しています。サーバー上に(グリッド用の)MVCモデルを作成し、それをビューに渡します。ビューでは、シリアル化されてKOモデルに変換され(ko.mappingを使用)、バインドに使用されます。そのバインディングは、グリッド作成のためにHTMLで使用されます。
これは私のMVCグリッドモデルがどのように見えるかであり、ko.mappingによって対応するKOモデルに変換されます。
明らかなように、メインモデルクラスGridModelは、プロパティとして存在する次のクラスで構成されています。
GridBodyModel:グリッド本体にレンダリングされる行のリストがあります。
GridContext:プロパティとして総ページ数があります。他のプロパティもありますが、それはこの説明の範囲外です。
GridHeaderModel:グリッドのヘッダーに表示する必要のあるセルのリストがあります。
次に、新しいページの読み込み時に実行されるこのスクリプトがあります。
Global_GridKOModelはグローバルJavaScript変数です。 モデルは、サーバーからのMVCグリッドモデルです。
ユーザーは、ページでさらに検索を再度実行できます。私はAjaxを介して新しい検索条件を投稿することでこれを処理します。この投稿では、新しいMVCモデルが作成され、Ajax応答として返送されます。次に、この新しいMVCモデルを使用して、ko.mappingを使用してGlobal_GridKOModelを更新します。これにより、新しいページの読み込み時に以前に構築されたグリッドが(新しいデータで)更新されます。これが私がやっている方法です。
次のシナリオを除いて、すべてが正常に機能しています。
結果が返されないAjaxリクエストが作成されます。つまり、GridBodyModelとGridHeaderModelがモデルGridModelでnullになります。そのタイムグリッドは、レコードが見つからなかったことを正しく示しています。正解です。これは、次のHTMLバインディングによって発生します。
この後、別のAjaxリクエストが行われたが、今回はレコードが返される場合(firebugで応答を確認し、レコードが実際に返されることを確認しました)。この時間グリッド構築は、さまざまな監視可能なアレイにアクセスする場合に発生します。たとえば、グリッドのページャーを作成するには、私が作成したHTMLバインディングを使用します。
今回、KOはfirebugで見られる次のエラーをスローします。
バインディングを解析できません。メッセージ:TypeError:GridHeader.Cellsは関数ではありません。バインディング値:attr:{colspan:GridHeader.Cells()。length}
レコードが返される限りは正常に機能しますが、上記で説明したように、レコードが返されないと機能しなくなります。レコードが返されない場合、以前の応答ではGridHeaderがnullであったことに注意してください。ko.mappingで何か魚臭い匂いがします。監視可能な配列をマッピングする際に問題があると思います。
それで、私が正しくやっていないのは何ですか?誰かお願いします?
はっきりと述べていない場合は、遠慮なく説明を求めてください。
前もって感謝します。
knockout.js - プランジンのマッピングでknockoutjs $indexが機能しない
私はasp.net mvc 3とknockoutjs 2.0を使用しています。マッピングプラグインを使用して、以下のようにモデルをjsonとして変換しました
私のモデルは
$index が機能していません。
前もって感謝します
asp.net-mvc - Knockout.jsとチェックボックスのリスト:MVCコントローラーに投稿
私は次のようなMVCビューモデルを持っています:
CountriesCollectionオブジェクト(9行目)は次のようになります。
ここで、CountriesCollectionの新しい空白のインスタンスを作成し、それをDirectorySearchModelビューモデルの空白のインスタンスに追加して、すべてをKnockout.jsのjavascriptビューモデルにシリアル化します。
チェックボックスは次のように表示されます<input checked="checked" data-bind="checked: Countries.arrCountries" id="Countries_arrCountries30" name="Countries.arrCountries" type="checkbox" value="1">
。カップルをチェックするということは、このKnockout.jsビューモデルになってしまうことを意味します。
ビューを通常どおりに(つまり、Knockout.jsではなく送信ボタンを介して)MVCアクションに送信すると、チェックされたアイテムのリストを取得するDirectorySearchModel
ように要求できmodel.Countries.arrCountries
ますが、...
また...
同じことを期待する別のアクションにDirectorySearchModel
、 model.Countries.arrCountries
常にnull
!arrCountries
MVCがsを期待しているときにKnockout.jsがエントリをstring[]
sとして投稿したためかどうか疑問に思いましint[]
たが、MVCコードをstring[]
sを期待するように変更してもそれほど変わらないようです。内のCountriesCollection
オブジェクトはDirectorySearchModel
存在しているように見えますが、それはarrCountries
常に内にありますnull
。
何か案は?どんな助けでも大歓迎です!
編集
Knockout.js viewModelを受け取るアクション:
getResultCount
方法:
修繕!
Knockout.jsビューモデルをmvcアクションに戻すために$.postから$.ajaxに切り替えるだけでよいことを指摘してくれた、Konstantinに感謝します。これが私が使用している$.ajaxコードです:
jquery - ノックアウトを介してMVCアクションに送信されたフォームには、余分な二重引用符があります
ノックアウトモデルを介してコントローラーアクションに送信されたデータに問題があります。各文字列フィールドには、それを囲む余分な二重引用符があります。これは問題です。
データを手動で逆シリアル化することはできますが、MVC3を使用している場合、この問題はまったく発生しないはずです。ajax投稿ではなく、フォーム送信を行う必要があることに注意してください。
HTML:
スクリプトコード:
コントローラのアクション:
投稿後のモデルの内容:
生の投稿データ:
私は何が間違っているのですか?
knockout.js - ajax リクエストが返されるたびに再度マップしようとするノックアウトのモデル。ビューが更新されていません
asp.net mvc 2 プロジェクトでノックアウトを使い始めました
とにかく簡単なことをやってみた。私は次のようなモデルを作成しました:
次に、jquery の document.ready で次のように呼び出しました。
私が持っているaspx自体に:
最初にデータを userViewModel に入れると、ビューは期待どおりに表示されます。それは素晴らしいことですが、最初はビューを空から始めたいと思っています。ユーザーがユーザーを選択した後、私は ajax リクエストを作成します。私の応答は次のとおりです。
次に、コールバック関数で:
それだけだと思います。ビューがサーバーからの新しいデータで更新されません...何が間違っていますか?
ありがとう!
knockout.js - ノックアウト パフォーマンス - オブジェクトが観察できない場合、プロパティをバインドできますか?
ツリー ビューを作成するために、テンプレートを介してマップされた大きなネストされた監視可能な配列があります。リストは動的ですが、ツリーには 1000 以上の要素が存在する可能性があります。
このコレクションの読み込みと検索でパフォーマンスの問題が発生しています。特に IE8 と iPad で顕著です。クロムは大丈夫そうです。
コレクション内の要素は実際には変更されないため、オブザーバブルの「通知」の側面は必要ないと思いますが、データバインディングを利用したいと考えています。
観察できないビューモデル内のオブジェクトにデータバインディングを行う方法はありますか? ko.mapping.fromJS() を使用せずに、観測不可能な複雑なデータ コレクションを作成する方法はありますか?
json - json と knockout.mapping で kogrid を使用する
kogrid を、knockout.mapping でマッピングされた json データと一緒に使用しようとしています。私のWebAppでは、FirefoxとChromeで部分的に動作します.IE9ではうまくいきません. 今、私は fiddle.js で問題を再現しようとしました: しかし、まったく動作していません - FF も Chrome も IE9 もありません。私は自分の間違いを見ることができません、他の人はいますか?
knockout.js - ノックアウトは、自動マップされたオブザーバブルから空のオブジェクトを作成します
koマッピングの小さな問題を解決しようとしています。シナリオは、私のViewModelが基本的にオブジェクトのコレクションであるというものです。各オブジェクトは、次のようにjson呼び出しから作成されます。
これは完全に機能し、HTMLであらゆる種類の魔法を実行できます。問題は、たとえば、コレクションに何かを追加したい場合、たとえば、クライアント側の「追加と編集」シナリオをサポートする場合です。私は次のようなことをしたいと思います:
そして、ViewModelのAddNew関数を次のようにしたいと思います。
基本的に、既存の他のオブジェクトと同じオブジェクトをプッシュする必要がありますが、もちろん、すべてのプロパティが空白になっています...
リストからオブジェクトを「複製」し、すべてのオブザーバブルを空に設定する方法を考えていましたが、どこから始めればよいのかわかりません:/