我正在从服务器接收以下JSON:
然后我尝试使用AJAX调用中的$ .map对其进行映射success
,如下所示:
$.ajax({
type: "GET",
url: urlGetStaticData,
success: function (data) {
self.AvailableTags(data[0].Value);
self.MeasurementUnits($.map(data[1].Value, function (item) { return ko.mapping.fromJS(item) }));
最后一行抛出以下异常:
未捕获的TypeError:无法将符号值转换为字符串
当它尝试使用Symbol
名称映射属性时。
根据我的阅读,javascript最近(或至少已计划)添加了“新的Symbol基元类型”。这个问题可能相关吗?有什么解决方法?任何帮助,不胜感激。
这里的问题是KO试图使用一个称为的函数Symbol
(因为KO的可观察对象是函数),因为数据中的属性之一被称为Symbol
。但是在ES2015引擎上,将有一个全局Symbol
功能作为JavaScript环境的一部分。因此,KO而是调用该函数,Symbol
而不是期望的返回值,然后(显然)进行了一些尝试将该值强制转换为字符串的操作。哪个失败。(我不确定为什么最终会调用全局Symbol
而不是隐藏全局,但是KO使用了一些相当复杂的动态代码和with
语句,所以...)
这可能是最近的JavaScript语言更改带来的KO映射器中的错误。作为短期修复,请在映射属性之前重命名该属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句