Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何使用knockout映射插件添加新的匿名项_Jquery_Knockout.js_Knockout Mapping Plugin - Fatal编程技术网

Jquery 如何使用knockout映射插件添加新的匿名项

Jquery 如何使用knockout映射插件添加新的匿名项,jquery,knockout.js,knockout-mapping-plugin,Jquery,Knockout.js,Knockout Mapping Plugin,当我尝试向数组中添加新项时,我似乎无法让Knockout映射插件执行“create”方法(项)。 它似乎是在json的初始创建时执行的,但不是在添加新项时执行的 这是一个非常简单的例子 注意:我已经看过了,但它们都引用了我没有的静态对象 初始JSON var json = { "Items": [{ "ItemID": 1, "ItemDate": "2000-01-02T00:00:00Z", "Amount": 50 },{

当我尝试向数组中添加新项时,我似乎无法让Knockout映射插件执行“create”方法(项)。 它似乎是在json的初始创建时执行的,但不是在添加新项时执行的

这是一个非常简单的例子

注意:我已经看过了,但它们都引用了我没有的静态对象

初始JSON

var json = {    
  "Items": [{
        "ItemID": 1,
        "ItemDate": "2000-01-02T00:00:00Z",
        "Amount": 50
    },{
        "ItemID": 2,
        "ItemDate": "2000-01-02T00:00:00Z",
        "Amount": 100
    }]
};
映射选项

 var mappingOptions = {    
  "Items": {
    create: function (mappingoptions) {
        var data = mappingoptions.data;

        data = data || {
            "ItemID": ko.observable(0),                        
            "ItemDate": ko.observable(currentDate),                        
            "Amount": ko.observable(new Date())
        };

        var result = ko.mapping.fromJS(data);                                     
        return result;            
    }
  }
};
查看模型(使用添加方法)

映射插件的目标(顾名思义)是在对象图之间映射,而不是为拉伸创建新对象。因此,它不提供任何功能,可以帮助您在这个用例

但是,您的
Items
create函数已经处理空项大小写,因此您可以在
addItem
方法中直接调用此函数:

model.addItem = function() {
    model.Items.push(mappingOptions.Items.create({}));
};  
演示

model.addItem = function() {
    model.Items.push(mappingOptions.Items.create({}));
};