我试图让它发挥作用,但没有做正确的事情。我正在使用淘汰赛,获取 json 响应并将其映射到结帐车,我无法做的是在添加产品价格总和之后添加一个函数。请参阅下文了解我正在尝试做的事情,
完整的小提琴在这里.. http://jsfiddle.net/justayles/Jeaua/26/
var jsonCart = {
"globalshipping": 1.00,
"globaltax": 5.00,
"productitem": [
{
"img": '/Content/img/notavailable.jpg',
"produrl": 'http://www.google.com',
"prodtitle": 'Product1',
"opt1": 'colour',
"opt2": 'size',
"qty": 3,
"unitprice": 10.00,
"shippingcost": 0.00,
"like": true,
"likediscount": 10,
"taxable": true
},
{
"img": '/Content/img/notavailable.jpg',
"produrl": 'http://www.google.com',
"prodtitle": 'Product1',
"opt1": 'colour',
"opt2": 'size',
"qty": 1,
"unitprice": 33.00,
"shippingcost": 0.00,
"like": false,
"likediscount": 0,
"taxable": false
},
{
"img": '/Content/img/notavailable.jpg',
"produrl": 'http://www.yahoo.com',
"prodtitle": 'Product1',
"opt1": 'colour',
"opt2": 'size',
"qty": 5,
"unitprice": 21.00,
"shippingcost": 0.00,
"like": true,
"likediscount": 10,
"taxable": true
}
]
};
var mappingOptions = {
'productitem': {
// overriding the default creation / initialization code
create: function (options) {
return (new (function () {
// setup the computed binding
this.calcPrice = ko.computed(function () {
return this.unitprice() * this.qty();
}, this);
ko.mapping.fromJS(options.data, {}, this);
})(/* call the ctor here */));
}
}
};
var viewModel = ko.mapping.fromJS(jsonCart, mappingOptions );
viewModel.grandTotal = ko.computed(function() {
var result = 0;
ko.utils.arrayForEach(this.productitem, function(item) {
result += item.calcPrice;
});
return result;
}, viewModel);
console.log(viewModel);
ko.applyBindings(viewModel);