問題タブ [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 に答える
2657 参照

javascript - 計算されたオブザーバブルをノックアウト js マッピングに追加する方法

マッピング プラグインを使用して、サーバーから送信されるオブジェクトに基づいてクライアント側のビュー モデルを作成しています。オブジェクトは基本的な住所情報です。つまり、住所 1、住所 2、都市、州、郵便番号などです。

ビュー モデルがバインドされたら、ユーザーが住所を変更した場合に Google マップ キャンバスを更新する必要があります。入力された値をチェックし、マップ更新関数を呼び出す計算オブザーバブルを作成しました。以前は、マッピング プラグインを使用していなかったとき、つまりモデルがローカルで定義されていたときにこれが機能していましたが、マッピングを導入すると、計算されたオブザーバブルをビュー モデルに追加できませんでした。

マッピング プラグインのドキュメントの指示に従ってみましたが、計算されたオブザーバブルが更新をトリガーしていません。例のように計算されたオブザーバブルを含む mapModel を呼び出すカスタム マッピングがありますが、更新はありません。

何か案は?

0 投票する
8 に答える
50242 参照

javascript - KnockoutJSのラジオボタンにtrue/falseをバインドする

私のビューモデルには、trueまたはfalseの値を持つIsMale値があります。

私のUIで、次のラジオボタンにバインドしたいと思います。

私が思う問題checkedは、文字列「true」/「false」を予期していることです。だから私の質問は、このUIとモデルを使用してこの双方向バインディングを取得するにはどうすればよいですか?

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

jquery - KnockoutJSは、マッピングプラグインを使用してプロパティの変更をサブスクライブします

とにかく、特定の関数を呼び出すすべてのプロパティ変更をサブスクライブするようにノックアウトマッピングプラグインに指示できますか?

次の方法で、プロパティ変更イベントを手動でサブスクライブできることに気付きました。

ただし、ビューモデルが異なる可能性があるため、プロパティ名をハードコーディングしたくないので、一般的にサブスクライブできるようにしたいと思います。これを行う関数を作成しましたが、最善のアプローチではない可能性があります。IE7以下を除くすべてのブラウザで動作します。

ここでは、ビューモデルを引数として取り、プロパティをサブスクライブしてそれを反映しようとします。

私が言ったように、これは機能しますが、マッピングプラグインを使用しているので、プロパティの変更を一般的にサブスクライブする関数を提供するために使用できるフックがあることを期待していました。

何かのようなもの:

何か案は?

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

knockout.js - ルートとしてのJSON.NETクラス名

ASP.NETMVC4WebApiとKnockout.jsを使用しています。

私のモデルは、1-Nコントロールを含むページで構成されています。新しいページをロードする必要がある場合は、HTMLビューとJSONシリアル化オブジェクトをフェッチし、すべてをKOでまとめます。私のモデルは非常に動的であるため、KOマッピングプラグインを使用するので、すべてのオブザーバブルを定義する必要はありません。

これが私の(非常に単純化された)モデルです:

実際、私はこれを取得しています(JSON.NETでシリアル化されています):

問題は、JSONにルートキーとしてクラス名が必要であり(KO.Mappingがそのように必要とするため)、JSON.NETシリアライザーに含まれていないことです。

これが私がJSONを必要とする方法です:

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

knockout.js - KnockoutJS マッピングの更新がスタイル バインディングで正しく機能しない

次のような KnockoutJS テンプレートがあります。

N 回目のテストを実行した後、データが変更されていなくても、KnockoutJS は毎回テンプレートを更新するため、このようなテンプレートの作成には欠陥があることに気付きました。

これらの 2 つのフィドルを使用してこれを説明しました。

ご覧のとおり、最初の読み込みをパウンドするか、foreach バインディングで更新されたデータ ボタンを読み込むと、データが実際に変更されない限り、UI は再レンダリングされません。残念ながら、データ スタイル バインディングで同じことを行うと、毎回再レンダリングされます。

私は本当に違いが何であるかを理解できません。データ バインディングは foreach と同じように機能するが、テンプレート内のオブジェクトをより細かく制御できるという印象を受けました。

私がこれを使用している唯一の理由は、ネストされたテンプレートのセットがあり、手元にある実際のオブジェクトに近づく必要があるからです。私はリファクタリングしてそのアプローチから逃れることができるはずですが、なぜそれが問題なのか疑問に思っています。

<!--ko foreach:-->foreach テンプレート バインディングが使用するのと同じパターンを尊重すべきではありませんか?

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

knockout.js - テンプレートアフターレンダーを使用したデータ更新に関するKnockoutJSおよびマッピングプラグイン固有のロジック

これは一種の2つの部分の問題です。

まず、テンプレートバインディングでアフターレンダーを使用して、テンプレートが新しいデータをレンダリングするたびにアクションを実行します。それは正しく機能します...それがあまりにも正しく機能することを除いて。データが追加または削除されない限り、起動しません。

次に、最初の「問題」と戦うために、カスタムの「更新」を作成し、データが変更されたかどうかを検出する必要があると考えました。これも理にかなっていますが、マッピングの更新関数も「データが追加または削除された場合にのみ実行する」という考え方に従っていることに気付きました。

そこで、次のようなマッピングモデルの特定のプロパティを更新する必要があると考えました。

しかし、それはまったくの混乱に変わり、機能すらしません。

チェックアウトしたい場合は、こちらがFIDDLEです。

簡単に言えば、プロパティが更新されているときに、プロパティをサブスクライブする方法があるはずだと確信していますか?多分あなたは計算されたオブザーバブルを作らなければならないのだろうか?私はこれをあちこちに投げて、ライアンがすでに何度も持っているので、ライアンが私に教えたいかどうかを確認します:)

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

knockout.js - ノックアウトは、配列内のオブジェクトのプロパティをマッピングしていません

ノックアウトが配列内のオブジェクトのプロパティを正しくマッピングしていないようです。

クロム コンソールからのこの例を参照してください。

そのため、JavaScript オブジェクトは作成されていますが、「name」プロパティはマップされません。

どんなアイデアでも大歓迎です!

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

knockout.js - Knockout マッピング プラグインまたは私のコードの配列バグ?

最近、KO マッピング プラグインを使用してページのデータを更新する際に気になる点がいくつかあります。最初のものは 2.1.1 で修正されたと思いますが、以下に示す 2 番目のものはまだ存在します。

私は単純なモデルを持っています。問題は、含まれているアドレスの配列にあります。マッピングプラグインを使用すると、実際には1つしかないのに、配列内の2つの要素を追跡しているようです。これが私のコードの問題なのか、マッピング プラグインの問題なのかはわかりません。次の簡単な例を考えてみてください。

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

knockout.js - json 内の配列にアクセスするための knockout.mapping

これは以下の私の例です。私のプロジェクトでは、knockout.mapping プラグインを使用しています。

mails 配列内の「from」要素を My Un Ordered list に入力したい:

コメント付きのコードでは、jquery ajax を使用してデータベースから取得したデータを追加します。

メールを私のリストにバインドするのを手伝ってください。