1

フォームのボタンに機能を追加しようとしています。alertMe が定義されていないというメッセージが表示され続けます。

私は自分のマッピングを次のように宣言しようとしました:

$(function () {

        var mapping = {
            create: function (options) {
                return new CsvImportItem(options.data);
            },
            alertMe: function () {
                alert('Here we go');
            }
        }


        var CsvImportItem = function (data) {
            ko.mapping.fromJS(data, {}, this);

            this.rowClass = ko.computed(function () {
                if (this.Accepted()) return 'success'; else return 'error';
            }, this);

            this.acceptItem = function () {
                this.Accepted(true);
            };

            this.declineItem = function () {
                this.Accepted(false);
            };

        }
        var viewModelJSON = ko.mapping.fromJS($.parseJSON('@Html.Raw(jsonData)'), mapping);

        ko.applyBindings(viewModelJSON);
    });

viewModelJSON を次のように変更すると:

var viewModelJSON = ko.mapping.fromJS($.parseJSON('@Html.Raw(jsonData)'), {}, mapping);

その後、alertMe 関数呼び出しは機能しますが、残りの表示項目は機能しません。私が間違っていることについて何か考えはありますか?

データ構造を表示するように更新

ビューに入ってくる私のデータ構造はタイプです

IEnumberable<Project.Namespace.CsvImportItem>

したがって、次のような構造を取得しています。

[
 {CsvImportItem},
 {CsvImportItem},
 {CsvImportItem}
]
4

1 に答える 1

2

json マッピングをマッピング オブジェクトに適用しようとしています。正しい構文です

var viewModelJSON = ko.mapping.fromJS($.parseJSON('@Html.Raw(jsonData)'), mapping);

また、マッピングをスキップします。これらのような単純なシナリオでは必要ありません

ko.applyBindings(new CsvImportItem($.parseJSON('@Html.Raw(jsonData)')));
于 2012-11-27T09:32:24.497 に答える