問題タブ [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.

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

knockout.js - knockout.mapping.js - observableArray を更新しても ko.computed 値が更新されない

ノックアウト.mapping.jsのドキュメントに基づいて、データオブジェクトのプロパティがオブザーバブルになり、リストがオブザーバブルアレイになると書かれていますが、ko.mapping.fromJSの製品であるはずのオブザーバブルアレイを更新する際に問題が発生しています。

次のフィドルを作成しました。

http://jsfiddle.net/zjT6c/1/

サービスの追加ボタンをクリックすると、observableArray が更新されたことがコンソールに表示されますが、formattedService の計算値は更新されません。私が間違っていることはありますか?テキスト領域を変更すると名前を編集できますが、何かをプッシュしてもサービスリストの計算値は更新されません...

アイデアをありがとう!

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

javascript - KnockoutJS-計算された値を監視可能な配列に追加する

KnockoutJSを使用してデータをページにバインドしています。ViewModelには、次のように、マッピングプラグインを使用したAJAX呼び出しからのJSON応答が入力されています。

そこの中央部分は機能しません(計算されたプロパティがなくても正常に機能します)。「ブローカー」は監視可能な配列であり、URLと呼ばれる配列内のすべての要素に計算値を追加したいと思います。hrefそのBrokers配列をforeachにバインドしており、そのURLをアンカーの属性として使用したいと思います。何か案は?

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

javascript - KnockoutJSを使用したオブジェクトのドロップダウンの初期選択

私はこのようなモデルを持っています(実際のコードではないので、タイプミスの可能性を気にしないでください)。

ドロップダウンで選択できるオブジェクトoptionscoantainsリスト。には、オブジェクトのリストも含まれています。各オブジェクトには、options-listにあるような同一のオブジェクトがあります。items

次に、アイテムリストを調べて、各行にドロップダウンボックスを表示します。ここでは、アイテムリストの現在のアイテムのオブジェクトを選択オプションにする必要があります。ただし、optionValueを設定せず、オブジェクト全体でのみ一致させようとすると、機能しません...ただし、オブザーバブルは正常に機能し、オブジェクト全体のすべてのサブスクライブフィールドが新しい選択で更新されます。ただし、optionValueなどで機能する最初の選択を取得しましたId

私の問題は、IDにバインドされた要素のみが更新されることです。ドロップダウンで何かを変更したときに変更されるのはIDだけであっても、現在のアイテムのすべてのプロパティを更新する必要があります。

これはどのようにすればよいですか?

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

javascript - Knockout.js マッピング。ビューモデルの一部だけを更新するには?

ユーザーがリストから1枚の写真を選択していくつかのプロパティを変更できるシンプルなページを作成したいので、モデルを作成しました:

およびマークアップ:

主なアイデアは、ユーザーが写真をクリックすると、setCurrent関数が呼び出され、そこでcurrentPhotoバインディングをクリックして渡されるビューモデルで更新できるということですがsetCurrent、ビューモデルがルートモデルになることを期待して(ソースからわかるように)問題があり ます。すべてのオブザーバブルを手動で調べて値を更新するか、rootModel のマッピングを解除し、プロパティを設定してからルートを更新できることはわかっていますが、これを行うにはもっと複雑でエレガントな方法があると思います。ko.mapping.fromJS(jsObj, viewModel)

ありがとうございました。

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

javascript - Knockout.js、マップされた2次元配列の値を変更する方法は?

オブジェクトの2次元配列をjsonとして返すコントローラーがあります。私は自分のJavaScriptから電話をかけます:

私は次のhtmlも持っています:

これは、(Colorプロパティからのクラスに基づいて)きれいに色付けされたセルを持つ素敵な2次元のhtmlテーブルを生成します。この色を別の色に変更するにはどうすればよいですか?

試しboard[1][1]({Color: 'red'});ましたが、board[1]が存在しないというエラーが表示されます。

そして別の質問ですが、バインディングに複数のクラスを追加するにはどうすればよいですか?私は試した:

しかし、それから私は得る:

それはバグですか、それとも私は何か間違ったことをしていますか?

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

javascript - knockout.mapping.js、マップされた変数の一部のみを更新することはできますか?

私のJSには、ノックアウトマッピングプラグインを使用して結果のjsonをバインドする次のajax呼び出しがあります。

/Get/GetRack戻り値:

[{"Color":3,"Letter":"a","Points":5},null,null]

ご覧のとおり、配列にはオブジェクトが 1 つしかありません。他の 2 つはヌルです。

ノックアウトマッピングを使用して、次のことができます。

そうすることでビューが正しく更新され、2 番目の位置に文字 B しか表示されなくなりました。他の 2 つはヌルです。

私の質問は、mapping.fromJS を使用せずに特定の位置の値を更新できますか?

したがって、インデックス 0 に文字 A があると仮定すると、2 番目の null を に変更し
{ Color: 55, Letter: "b", Points: 88 }
、UI を自動的に更新してこの変更に似せたいと考えています。これはどのように行うことができますか?


編集:

John Earles の例を参考にすることにしました。残念ながら、私の配列は 2 次元であるため、まだ問題があります。

ここにサンプルがあります: http://jsfiddle.net/wgZ59/29/
(これは John Earles の例に非常に似ていますが、2 次元配列が含まれています)。

変更ボタンをクリックしても要素の値が変更されない理由を誰かが指摘できますか? HasMutated() を呼び出さずに値を変更することもできますか?

そして最後のもの (前の 2 つが解決された場合のみ)。HTMLテーブルを静的に作成することは可能ですか(たとえば、常に3x3になることがわかっているため、3行3列の2つの印刷テーブルが必要であり、個々のセルをマトリックスセルにバインドします。すでに試しましたが、ノックアウトにはセルの値がなかったため、問題が発生しました...


EDIT2:

上記の質問に自分で答えることができました。フィドルの例は次のとおりです。

http://jsfiddle.net/wgZ59/44/

したがって、次のように配列を宣言すると、静的テーブルを作成して個々のセルをバインドできます。

self.matrix = ko.observableArray([[0,0,0],[0,0,0],[0,0,0]]);

また

self.matrix = ko.observableArray([[,,],[,,],[,,]]);.

値を更新でき、静的テーブルでは機能しますが、動的テーブル (ノックアウトによって動的に作成される) では機能しません。フィドル ページ (この編集の冒頭にあるリンク) で動作を確認できます。「変更」ボタンを押しても、動的に作成されたテーブルの値が更新されない理由を知っていますか?

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

javascript - Knockoutのマッピングプラグインによって作成された配列でスライスを使用する

私はこれに一日中苦労していて、何が欠けているのかわかりません。Knockoutを使用して作成された作業グリッドがあります。マッピングプラグインを使用するようにグリッドを変換しようとしていますが、ページングが壊れます。マッピングプラグインでslice関数を使用して、配列のサブセットを返すにはどうすればよいですか?私は何が欠けていますか?

itemsOnCurrentPage(foreach:itemsonCurrentPage)にバインドしようとしています。アイテムに直接バインドすると正常に機能します。これは、クライアント側でアレイを手動で構築しているときに機能しました。現在、jQueryを介してデータを取得し、マッピングプラグインを使用しています。何が欠けているのかわかりません。どんな助けでも大歓迎です。

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

knockout.js - テンプレートにknockoutjs.mappingデータを表示するにはどうすればよいですか?

ノックアウトのマッピングプラグインを使用して、JSONオブジェクトの情報と配列をテンプレートに表示するにはどうすればよいですか?

Chromeのコンソールを使用してviewModel()およびviewModel()[0] .title()を介してオブジェクトにアクセスできますが、この日付をテンプレートにバインドする方法がわかりません。

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

knockout.js - ノックアウト マッピングが $.change 関数を強制終了するのはなぜですか?

MVC4 アプリケーションで正常に動作する次の Javascript および Html コードがあります。

しかし、次の my $('.data').change(function () { vm.updateOuting();} ); を実行してマッピングを実装しようとすると、呼び出されることはありません。Chrome 開発者ツールはエラーをキャッチしていないようで、途方に暮れています。情報は html にバインドされます。テキスト ボックスからタブで移動すると、何も起動しません。(以前と同じスクリプト参照)

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

knockout.js - Knockout JS - 詳細オブジェクトからオブザーバブル配列を設定する必要がある

ここにフィドルがあります http://jsfiddle.net/srinivasanvee/yYEwJ/2/

カテゴリ、製品、数量を列として持つリストがあり、ドロップダウン自体から新しいカテゴリを追加するオプションがあり (--新規追加-- オプションを選択)、カテゴリ subscribe メソッドから categoryList observableArray を入力したかった (新しく追加された値は、グリッドのすべての行に適用する必要があります)、それを行う方法がわからない、$root.categoryList.push(name) で試しましたが、うまくいきません

それとも、このシナリオを処理するさらに良い方法がありますか? これについての助けは本当にありがたいです、前もって感謝します。