1

ノックアウト マッピング プラグインを使用して、内部配列を持つデータからビューモデルを作成しています。HTML を正しくロードし、viewmodel で add 関数と remove 関数を取得して、DOM に必要な変更を加えることができます。しかし、stringifyJson を使用して変更を保存しようとすると、文字列が未定義になります。

var viewModel = {
groupItem: ko.observableArray(),
add: function() {
    this.scheduleitems.push({
        time: ko.observable("03:00"),
        LL: ko.observable(""),
        L: ko.observable(""),
        H: ko.observable(""),
        HH: ko.observable("")
    });
   },
   remove: function(item,parent) {
        parent.scheduleitems.remove(item);
},
save: function() {
    var data = ko.utils.stringifyJson(this.groupItem);
    console.log(data);
}
};

var data3 = [
{
        "title": "P1 Alarms",
        "id": "dadas-sadf-asdf-asd",
        "behaviouritems": [
            {"title": "GPRS","LL": true,"L": false,"H": true,"HH": false},
            {"title": "SMS","LL": false,"L": false,"H": false,"HH": true},
            {"title": "Software","LL": false,"L": false,"H": true,"HH": false}
        ],
        "scheduleitems": [
            {"time": "00:00","LL": false,"L": false,"H": false,"HH": true},
            {"time": "02:00","LL": true,"L": false,"H": false,"HH": false}
        ]
}]

ko.mapping.fromJS(data3, null, viewModel.groupItem);
console.log(viewModel.groupItem);

ko.applyBindings(viewModel, document.getElementById("customerDiv"));

ここに問題のフィドルがあります: http://jsfiddle.net/davidoleary/q2BSZ/

4

1 に答える 1

0

これは間違いだと思います。stringifyJson を使うべきではありませんでした。次のいずれかを使用すると、UI を介して行われたすべての変更を含む期待される結果が得られることがわかりました。

var result = ko.mapping.toJS(this);
console.log(result );

var jsonResult = ko.mapping.toJSON(this);
console.log(jsonResult);
于 2012-08-30T08:15:19.617 に答える