Jquery 如何使用knockout映射插件添加新的匿名项
当我尝试向数组中添加新项时,我似乎无法让Knockout映射插件执行“create”方法(项)。 它似乎是在json的初始创建时执行的,但不是在添加新项时执行的 这是一个非常简单的例子 注意:我已经看过了,但它们都引用了我没有的静态对象 初始JSONJquery 如何使用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 },{
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({}));
};