サーバーから次のJSONを受信しています。
そして、success
次のように、AJAX呼び出しで$ .mapを使用してマップしようとしています。
$.ajax({
type: "GET",
url: urlGetStaticData,
success: function (data) {
self.AvailableTags(data[0].Value);
self.MeasurementUnits($.map(data[1].Value, function (item) { return ko.mapping.fromJS(item) }));
最後の行は次の例外をスローします。
Uncaught TypeError:シンボル値を文字列に変換できません
プロパティをSymbol
名前でマップしようとしたとき。
私が読んだことから、javascriptは最近(または少なくとも計画していた)「新しいSymbolプリミティブ型」を追加しました。この問題は関連している可能性がありますか?どのような回避策がありますか?どんな助けでも大歓迎です。
ここでの問題はSymbol
、データ内のプロパティの1つがと呼ばれるため、KOがと呼ばれる関数を使用しようとしていることです(KOオブザーバブルは関数であるため)Symbol
。ただし、ES2015エンジンでSymbol
は、JavaScript環境の一部としてグローバル関数があります。したがって、KOは代わりにその関数を呼び出し、Symbol
期待したものではなく戻り値を取得してから、(明らかに)その値を文字列に強制変換しようとする操作を実行します。どちらが失敗します。(なぜそれがSymbol
何かをシャドウイングするのではなくグローバルを呼び出すのかはわかりませんが、KOはかなり複雑な動的コードとwith
ステートメントを使用するので...)
これは、最近のJavaScript言語の変更によってもたらされたKOマッパーのバグです。短期的な修正として、マッピングする前にプロパティの名前を変更してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加