問題タブ [ko.observablearray]

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

foreach - バインドされた監視可能な配列で foreach チェックボックスセクションを作成するための Javascript をノックアウトする

基本的に、繰り返し可能なセクションを作成しており、配列によって事前に提供されたすべてのチェックボックスのチェック状態を保持したいと考えています。

しかし、明らかに value="$data" は文字列 "$data" を返すだけです。関連データを保存およびロードするときに配列をjson文字列でマップするだけのソリューションに取り組み始めることにしましたが、これにより複雑さが増し、ハックのように感じるので、処理するより良い方法があるかどうか疑問に思っていましたこの状況。また、viewModel からサーバーへの応答を生成するので、supplierUsers を viewModel に直接マップすることもできますが、observableArrays はそのパラメーターに対して機能しないようです。

ノックアウト フレームワークを使用してから 3 日しか経っていません。ヘルプや提案をいただければ幸いです。

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

javascript - knockoutjs ObservableArraysとソート関数:UIは更新されません

私のビューモデルには、knockoutjsObserableArrayがあります。ViewModelを初期化した直後、データは正常にバインドされます。次に、コレクションを並べ替える必要があります。

ご覧のとおり、要素の名前をコンソールに出力して、並べ替えの前後の順序を確認します。並べ替えは問題なく機能します。問題はUIの更新にあります。どういうわけか、UIは更新されていません。

次に、次のコードを使用して配列からレコードを削除し、UIがそれに応答するかどうかを確認します。

UIは同じままで、再度更新されませんでした。ここでの問題は何でしょうか?

編集:

サンプルケースもあります:http://jsfiddle.net/tugberk/KLpwP/

ここでも同じ問題。

編集:

このサンプルに示されているように問題を解決しました:http://jsfiddle.net/tugberk/KLpwP/16/しかし、最初に試したときになぜそれが機能したのかはまだわかりません。

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

binding - Knockout foreach でカスタム バインディングを作成する

どこが間違っているのか理解できません。助けてください。「bTest1」という名前のカスタム バインドを作成します。これは、2 つの監視可能なデータ (1 つの配列と 1 つの文字列) です。このバインディングを文字列に適用するとうまくいきますが、ko:foreach による配列には適用できません。

これが私のjsfiddleリンクです:ここ

そして私のコード

そして私のJSコード(できるだけ簡単に):

助けてくれてありがとう。Sさん、よろしくお願いします。

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

jquery - knockout.js: ユーザーがフィルター値を変更したときにリストを更新する (サーバーへの呼び出し) 方法

サーバー(AJAX + JSON)から取得したアイテムのリストと、リストをフィルタリングするこのアイテムのステータスのフィルターがあります。フィルター値が変更されるとすぐにリストが更新されます (新しい Ajax リクエストが投稿されます)。助けてください

更新: アプローチの 1 つは、次のようにモデル内の selectedStatus の変更をサブスクライブすることです。

そうするのが最善の方法ですか?

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

model-view-controller - knockout.js - モデルの子リストから項目を追加/削除する

ページにジョブのリストを表示する foreach テンプレートがあります。各ジョブ内には、ジョブ ノートのリストがあります。ビューでジョブメモを更新できるようにするための適切なオブザーバブルを設定するのに問題があります。

jsFiddle へのリンクは次のとおりです: http://jsfiddle.net/b3B8p/

または、コードはそのままです。サブリストの監視可能な配列を Job オブジェクト自体に配置するか、ビューに配置するかはわかりません...

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

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で何か魚臭い匂いがします。監視可能な配列をマッピングする際に問題があると思います。

それで、私が正しくやっていないのは何ですか?誰かお願いします?

はっきりと述べていない場合は、遠慮なく説明を求めてください。

前もって感謝します。

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

knockout.js - ko.observable 配列を foreach ループにバインドできません

MVCからjson文字列に作成する単純なviewModelがあります。これを実現するためにko.mappingを使用しています。

この配列を反復処理して、ページにデータを表示したいと思います。foreach データ バインディングを使用しようとしています。

ただし、実行しようとすると、次のエラーが発生します。

「バインディングを解析できません。メッセージ: ReferenceError: ticketViewModel が定義されていません。バインディング値: foreach: ticketViewModel.Ticket」

どんな助けでも大歓迎です。

0 投票する
3 に答える
5521 参照

knockout.js - ノックアウト:ネストされたViewModelsの監視可能な配列への追加

監視可能な配列を持つネストされたビューモデルがいくつかあり、ネストされた配列のいずれにも正常に追加できません。トップレベルでの追加は正常に機能します。私は自分が間違っていることのトラブルシューティングを試みるためにたくさんの読書といじりをしましたが、役に立たなかった。

階層は次のとおりです。キュー->ファイル->クレーム->行

新しいファイルをキューに追加できますが、新しいクレームを追加できません(ファイルおよびキューを介して試行)

私が間違っていることについて何か考えはありますか? http://jsfiddle.net/bxfXd/254/

更新:以下のすべての回答は、コアの問題を指摘しました-監視可能な配列でインスタンス化されたモデルの代わりに生データを使用します。動作するコードで更新されたフィドル:http://jsfiddle.net/7cDmg/1/

HTML

JavaScript

</ p>

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

data-binding - observableArray に変更がある場合に UI を自動更新するにはどうすればよいですか?

こんにちは、knockout.js を使用する次のコードがあります。

allJobberDetailsArray への変更 UI を自動的に更新したい 配列項目が追加され更新または削除されたと言います UI にそれを反映させたいです。

どうすればそれを達成できますか?

編集

上記のコードでは、配列自体を監視可能にし、配列に変更があった場合に UI を自動更新しようとしましたが、どうすればそれを達成できますか?

0 投票する
5 に答える
41883 参照

knockout.js - Knockoutで計算された監視可能な配列を作成する方法

計算された監視可能な配列を作成する方法を知りたいです。

私のビューモデルには、2つの監視可能な配列があり、両方の配列を単純に組み合わせた、計算された監視可能な配列が必要です。