当映射下面的对象时,数组中的空 ""
值在可观察数组中映射为 false:
var d2 = {
"values": [{"9", false, "", true, null, "", "", ""]
};
var viewmodel2 = ko.mapping.fromJS(d2);
当使用 ko.mapping.toJSON(viewmodel2); 映射回 json 时,结果如下:
{ "values": [
"9",
false,
false,
true,
null,
false,
false,
false] }
请注意,数组中的最后 3 个字符串值将转换回 false。
这是一个错误吗?或者不支持包含 bool 值和字符串的数组
这是一个fiddle为此。
最佳答案
这确实是一个错误,现已修复。 这是由两件事造成的:
- 用于查看数组中包含哪些键的相等比较使用“==”运算符而不是“===”,因此它认为“false”和“”是相同的键。
- 其次,我对数组中的所有键进行排序,作为重复键处理逻辑的一部分。但是,当您没有显式提供关键回调时,不应该执行此操作,因为在这种情况下您可能关心项目的顺序。
最新版本 1.2.3 已在 GitHub 上提供,并且还创建了一个 NuGet 包。 Srluisreyes 善意创建的复制版 jsfiddle 现在也可以使用了!
关于knockout.js - 在包含空字符串的数组上使用 fromJS 会将这些字符串替换为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6858145/