ko.mapping.fromJS(Model) を使用して、ASP.NET MVC ビューモデルを KnockoutJS にロードしました。
私のビューモデルは次のようになります。
public IEnumerable<FunkyThing>funkyThings;
public FunkyThing selectedFunkyThing;
各 FunkyThing には、文字列プロパティ funkyThingName があります。マッピングは正常に機能し、テーブル内のすべてのファンキーなものとその名前を確認できます。
クイック更新ボタンを追加したい。だから私は単純なボタンを作成し、ボタンのクリックをノックアウト関数の更新にデータバインドしました。これは次のようになります。
model.refresh= function () {
var url = '@Url.Action(MVC.FunkyThings.RefreshJSON())';
$.getJSON(url, function (returnedData) {
ko.mapping.fromJS(returnedData, {}, model.funkyThings);
});
refresh 関数が正常に呼び出され、サーバーで RefreshJSON メソッドが呼び出されます。サーバーは JSON データ (更新された funkyThings の配列) を返します。これは、chrome のデバッガーで returnData にカーソルを合わせると、chrome 内で確認できます。
ただし、残念ながら、マッピング関数が呼び出された後、バインディングが壊れます。
不明なエラー: バインドを解析できません。メッセージ: ReferenceError: funkyThingName が定義されていません。バインディング値: テキスト: funkyThingName
そして、なぜだかわからない…?