【问题标题】:Observing changes to inner arrays in a viewmodel created the knockout mapping plugin观察视图模型中内部数组的变化创建了敲除映射插件
【发布时间】:2012-08-29 20:46:03
【问题描述】:

我正在使用淘汰映射插件从具有内部数组的数据创建视图模型。 我可以让 html 正确加载,并在我的视图模型中获取添加和删除功能,以对 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/

【问题讨论】:

    标签: knockout.js knockout-mapping-plugin knockout-2.0


    【解决方案1】:

    恐怕这是一个错误,我不应该使用 stringifyJson。如果我使用以下任何一种,我发现我得到了预期的结果,包括通过 UI 所做的所有更改。

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

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      相关资源
      最近更新 更多