問題タブ [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 投票する
2 に答える
4023 参照

javascript - updateFromJS を使用すると、値を追加する必要があるときに値が置き換えられます

私はこのコードを持っています:

上記の AJAX 呼び出しは次を返します。

これはうまくいきます。後で、ユーザーは添付ファイルを追加できますが、それが壊れているところです。モードに新しいアタッチメントを追加してページに表示する間、attachmentsModel.convAttachments.

後で、これが起こります:

アヤックスのリターン:

明確な説明が得られることを願っています。そうでない場合はお知らせください。を使用すると、なぜknockoutjsがすべてを殺すのupdateFromJSでしょうか?

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

javascript - 初期データなし/空のフォームのノックアウト JS マッピング プラグイン

jQTouch Web アプリケーションでのデータバインディングを容易にするために、ノックアウトとノックアウト マッピング プラグインを使用しています。マッピング プラグインを使用する理由は、javascript でビューモデルを手動で定義/変更する必要なくノックアウトを使用できるようにするためです。マッピング プラグインは、サーバー/クライアント側のデータベースからデータを最初にロードするときに最適に機能します。

私たちが抱えている問題は、初期データが存在しない可能性があるフォームを持ついくつかの画面/ビューがあることです。この初期データがないと、マッピング プラグインはビューモデル (ko.mapping.fromJS) を「生成」できません。これは、ビューの大部分に対して手動でビューモデルを定義する必要があることを意味します。

これがマッピング プラグインがサポートする (すべき) シナリオであると仮定するのは間違っていますか? つまり、これは、マッピング プラグインが、常にデータの初期ロードがあるシナリオでのみ使用できることを意味します。

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

knockout.js - 空の文字列を含む配列で fromJS を使用すると、それらの文字列が false に置き換えられます

以下のオブジェクトが""マップされると、配列内の空の値は監視可能な配列で false としてマップされます。

これを使用して json にマップし直すko.mapping.toJSON(viewmodel2);と、結果は次のようになります。

配列の最後の 3 つの文字列値が false に変換されることに注意してください。

これはバグですか?またはサポートされていないブール値と文字列を含む配列です

ここにフィドルがあります。

0 投票する
4 に答える
14871 参照

javascript - ビューモデルを実行するために常に使用することで、Knockoutマッピングプラグインを使いすぎていますか?

私はまだKnockoutの適切な使用法を学んでおりko.observable、ビューモデルを設定するときに入力するのをすぐにやめ、代わりにオブジェクトリテラルを定義し、次のようなものを使用してマッピングプラグインに渡すことに気付きました。

または、少なくとも、すべてのデータをviewModelの属性に詰め込むという方針に沿った何かが

正直なところ、私がこれを行ってきた主な理由は、入力しなければならないことを回避するためko.observableですko.observableArrayvar x = ko.observable()これが良いアプローチであるかどうか、そして特定の宣言をまとめて削除することの欠点があるかどうかを理解しようとしています。また、私はこれをすべてロード時に行っており、ajax呼び出しなどに応答していません。これは、私が知る限り、マッピングプラグインが設計された目的です。

ノックアウトを使用した作業では、オブザーバブルを1つずつ手動で宣言しますか、それとも私が使用するmapping.fromJSメソッドを使用しましたか?このように頻繁にマッピングプラグインを使用することの特定の欠点はありますか?

編集:

具体例

この記事では、スティーブは次のようにしてviewModelを設定します

通常、私はko.mapping.fromJSこの状況にも使用します。具体的には、配列内のオブジェクトが監視可能になっていることを確認するためです。彼が何をしたかを見ると、私のアプローチはやり過ぎのようで、少し不必要なオーバーヘッドが追加されます。

0 投票する
4 に答える
13851 参照

mvvm - ノックアウト マッピング プラグインを使用して、階層の深いオブジェクトをカスタム クラスにマッピングする

ノックアウト マッピング プラグイン ( http://knockoutjs.com/documentation/plugins-mapping.html ) を使用すると、深く階層化されたオブジェクトをマッピングできますか?

複数のレベルを持つオブジェクトがある場合:

JavaScriptでカスタムクラスにマップするにはどうすればよいですか:

マッピング プラグインは、このデータをカスタム オブジェクトの階層に再帰的にマッピングできますか?

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

knockout.js - Knockout.js とマッピング プラグインがディープ トランスレーションではない

メニューとブレッドクラムを処理するために json オブジェクトを使用しています。以下では、最初の 2 つの「ナビゲーション」ノードは監視可能ですが、最後のノードは監視できないことがわかります。何らかの理由で、それは単なる通常の配列です。マッピング プラグインはオブジェクトのディープ クローンを作成しませんか?

Firebug の出力:

初期化:

json.Layout JSON:

アップデート:

よく見ると、その「ナビゲーション」にはノードが1つしかないため、他のオブジェクトのような配列ではなく、1つのオブジェクトになります。どうすればこれを修正できますか?マッピングプラグインで作成を使用していますか?

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

knockout.js - Knockout.js と ko.mapping を使用した 1 次元配列のテンプレート

ko.mapping プラグインでマッピングしている JSON 文字列があり、マッピングされた配列の 1 つに対して観察可能なバインディングを作成する必要があります。配列は [1,2,3,4,5] として JSON にあるため、インデックスはありません。

次のコードが特定の時点まで機能しています。

<input data-bind="value: this.data" />したがって、そのフィールドが空白のままであることを除いて、すべてが期待どおりに機能しています...${this.data}ただし、正しい値が表示されます。

全体として、JSON 文字列を更新し、それをフラット ファイルに再保存しようとしています。データ配列を入力値に直接バインドでき[1,2,3,4]ますが、配列として更新されません。

これがビューモデルです: var viewModel = {};

JSONは次のとおりです。

[ { "type":"spline", "marker":{ "symbol":"diamond" }, "name":"Cumulative", "data":[10,17,18,18,16,17,18,19] }, { "type":"spline", "marker":{ "symbol":"circle" }, "name":"Monthly", "data":[10,22,20,19,8,20,25,23] } ]

どんな助けでも大歓迎です。また、間違った角度からアプローチしている場合は、提案をお待ちしています。最終的には、UI を介して JSON 文字列を変更して保存できるようにしたいだけです。

前もって感謝します。

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

knockout.js - knockout.mapping プラグインと knockoutjs で作成されたネストされたオブザーバブル配列に新しい値を追加する

これが期待どおりに機能するようになるのに非常に近いです。JSON リクエストからデータを取得し、マッピング プラグインを使用してマッピングしています。クリック バインディングで、ネストされた配列に新しい値を追加したいと考えています。

現在、私のコードでは、addPoint が定義されていないというエラーが発生しています。

意見:

モデルを見る

JSON:

[{"type":"spline","marker":{"symbol":"diamond"},"name":"Cumulative","data":[10,17,18,18,16,17,18,19]},{"type":"spline","marker":{"symbol":"circle"},"name":"Monthly","data":[10,22,20,19,8,20,25,23]}]

この jsfiddle を以前の応答から調整して、単一の配列にポイントを追加することができました。生成されたマッピング全体でこれを実装する方法を見つける必要があります。

http://jsfiddle.net/vv2Wx/1/

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

knockout.js - KnockoutJS-ko.mappingプラグインを使用した特定のフィールドの強制番号

私が使用するとき、ko.mapping.toJSONそれは私が行った変更を文字列に変換し、それらは数字である必要があります。私は次のようにカスタムマッピングを使用してみました:

...しかし、これはページの構成内の数字としてそれらを保持するだけです。これを使用して、HighCharts.jsによってプルされる外部JSONを更新しているため、toJSONの後でも数値は数値のままである必要があります。

ここでの以前の回答から、私は使用することができました:

...泳いで働いた。ただし、これはJSONの単一の値型であるため、同じオーバーライドをどのように使用できるかわかりません。この場合もこれを行うには、まったく新しいオブジェクトを作成する必要がありますか?それとも彼らの何かはもっと簡潔ですか?

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

javascript - KnockoutJs1.3ベータ版。_destroy:falseは、UIで_destroy:trueと同じ結果になります

asp.net mvcを使用して、ビューモデルを渡し、ノックアウトを取得してビューモデルをマップし、これにバインドします。

これはすべて私にとってはうまく機能しています。私がやろうとしているのは、削除を追跡することです。

_destroyプロパティを追加することでこれを実行できると思いましたが、falseに設定しました。

その後、destroyがtrueに設定するまで、UIがこれを無視することを期待していました。

しかし、これは事実ではないようであり、このプロパティの単なる存在が破壊されたものとして扱われる原因となっています。

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

どうもありがとう、コーハン

上記の要素はいずれも表示されません。「_destroy」:nullでも同じ効果があります。

問題の実例...

http://jsfiddle.net/jy53e/6/

更新:マッピング拡張機能の問題のようです。