KnockoutJS:如何快速将观察值转换回值

时间:2015-06-30 20:28:05

标签: arrays knockout.js

我目前有一个可观察的对象数组,其中包含可观察的属性。

appViewModel.diceArray = ko.observableArray( [ {
        diceAmount: ko.observable(1),
        diceType: ko.observable(null),
        diceAddition: ko.observable(0),
        diceMultiplication: ko.observable(1)
    } ] );

我现在希望将数据保存到数据库中,因此需要我的对象数组(没有它们是可观察的)。有没有比循环遍历数组和手动创建对象更快的方法?

3 个答案:

答案 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使用,其中支持您将需要的另一种方式。