gpt4 book ai didi

javascript - KnockoutJS - toJSON 在计算函数中不起作用

转载 作者:行者123 更新时间:2023-12-02 18:33:28 25 4
gpt4 key购买 nike

我正在使用 knockout 映射插件从我的服务器映射对象。

我想重新发送这个对象,因此,我最终需要将这个对象转换为字符串。我在计算函数中使用了 knockout 函数 ko.toJSON,以便隐藏字段可以采用该值。

这是一个 jsFiddle:http://jsfiddle.net/etiennenoel/4EXSy/13/

这是我的 View 模型

function appViewModel() {
var self = this;

self.playersEvaluation = ko.observableArray();
self.exportToJSON = ko.computed(function() {
return ko.toJSON(self.playersEvaluation)
}, this);
}

var viewModel = new appViewModel();

var dataContent = [{
playerId: 2,
playerName: "allo",
evaluatedExercises: [{
id: 1,
evaluationExerciseId: 1,
numberOfTries: 6,
tries: [{
id: 0,
number: 0,
result: 0
}, {
id: 0,
number: 0,
result: 0
}]
}]
}, {
playerId: 2,
playerName: "allo",
evaluatedExercises: [{
id: 1,
evaluationExerciseId: 1,
numberOfTries: 6,
tries: [{
id: 0,
number: 0,
result: 0
}, {
id: 0,
number: 0,
result: 0
}]
}]
}]


viewModel.playersEvaluation = ko.mapping.fromJS(dataContent);
ko.applyBindings(viewModel)

这是我在 html 中所做的事情:

<input type="hidden" name="a" data-bind="value: exportToJSON()" />
<pre data-bind="text: exportToJSON()">

</pre>

为什么只显示空字符串,而不显示 JSON 格式的 self.playersEvaluation 内容?

最佳答案

您正在替换 playersEvaluation 的值,因此使用 equals 进行计算:

viewModel.playersEvaluation = ko.mapping.fromJS(dataContent);

需要是这样的:

viewModel.playersEvaluation(ko.mapping.fromJS(dataContent));

为了设置而不是替换 observableArray。

更新了 fiddle : http://jsfiddle.net/dV5GM/1/

关于javascript - KnockoutJS - toJSON 在计算函数中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17576474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com