我目前有一个可观察的对象数组,其中包含可观察的属性。
appViewModel.diceArray = ko.observableArray( [ {
diceAmount: ko.observable(1),
diceType: ko.observable(null),
diceAddition: ko.observable(0),
diceMultiplication: ko.observable(1)
} ] );
我现在希望将数据保存到数据库中,因此需要我的对象数组(没有它们是可观察的)。有没有比循环遍历数组和手动创建对象更快的方法?
答案 0 :(得分:2)
使用ko.toJS
来自http://knockoutjs.com/documentation/json-data.html
ko.toJS - 这会克隆你的视图模型的对象图,用每个observable替换该observable的当前值,这样你就得到一个只包含你的数据而没有Knockout相关工件的普通副本
答案 1 :(得分:0)
如果potatopeelings的回答不是你想要的。您可以使用ko.utilsArrayMap:
var dices = ko.utils.arrayMap(appViewModel.diceArray, function(dice) {
return { diceAmount: dice.diceAmount(),
diceType: dice.diceType(),
diceAddition: dice.diceAddition(),
diceMultiplication: dice.diceMultiplication()
}
});
//do something with dices
答案 2 :(得分:0)
ko.toJS也可以作为industrial strength mapping plugin使用,其中也支持您将需要的另一种方式。