我们说我有这样的VM(price1到price100)......
var Item = {
price1: ko.observable(),
price2: ko.observable(),
price3: ko.observable(),
...
...
price100: ko.observable(),
name: ko.observable()
}
但是在将它发布到我的服务器之前,我需要在每个单独的价格中用commmas替换所有的点,而不是" name"变量。
我不想改变这个领域本身。我使用ko.toJS(项目)......所以我想改变这个结果而不需要手动完成所有价格。
这可能吗?
答案 0 :(得分:1)
如果您要一直使用JSON,那么您可以执行此处所述的操作:http://www.knockmeout.net/2011/04/controlling-how-object-is-converted-to.html
您可以向toJSON
添加Item.prototype
功能,例如:
Item.prototype.toJSON = function() {
//if calling ko.toJSON this will already be a "clean" object, but if calling JSON.stringify, then it would not, so get a clean version anyways
var clean = ko.toJS(this);
for (var prop in clean) {
if (clean.hasOwnProperty(prop) && prop.indexOf("price") > -1) {
clean[prop] = clean[prop].toString().replace(".", ",");
}
}
return clean;
};
然后,当你执行ko.toJSON(myItem)
时,它会进行替换。
如果你不想一直到JSON,那么你基本上想要直接做同样的事情。所以,你真的可以调用上面的toJSON
函数并取回你的干净对象。 var clean = myItem.toJSON();