在运行时填充属性

时间:2018-12-12 22:14:01

标签: javascript

我有一个视图对象(esri,javascript 4.9),我正在尝试填充属性。

当我在值中硬编码时,代码块可以正常工作,但是当我尝试在运行时使用字符串变量时,代码块将失败。

这是代码,其中包含硬编码值

    view.graphics.add({
      id: "centers",
      symbol: {
        type: "text",
        color: "black",
        text: "\ue62f",
        font: {
          size: this._defCallLocSize,
          family: "CalciteWebCoreIcons"
        }
      },
      geometry: {
        type: "point",
        latitude: parseFloat(_lat),
        longitude: parseFloat(_lon)
      },
      popupTemplate: {
        title: "",
        content: ""
      }
    });

这是带有全局变量的代码

    view.graphics.add({
      id: "centers",
      symbol: {
        type: "text",
        color: this._defCallLocColor,
        text: this._defCallLocIcon,
        font: {
          size: this._defCallLocSize,
          family: "CalciteWebCoreIcons"
        }
      },
      geometry: {
        type: "point",
        latitude: parseFloat(_lat),
        longitude: parseFloat(_lon)
      },
      popupTemplate: {
        title: "",
        content: ""
      }
    });

在调试器中查看this._defCallLocColor时,其作用类似于字符串(“ black”) 但是在运行时,颜色显示为白色(默认为esri)

现在要添加更多... lat和lon使用全局_lat和_lon正常工作

所以主要的问题是,为什么将全局变量this._defCallLocColor放入对象中时不将其视为字符串?

1 个答案:

答案 0 :(得分:0)

问题的答案是....这是一个unicode问题,javascript不像我期望的那样将unicode表示为字符串。所以我找到了一个小提琴 从 用户名 在这个线程上... Converting unicode character to string format

在添加内联代码以将unicode更正为常规字符串时。

        color: this._defCallLocColor,
        text: unicodeToCharIgnoreCap(this._defCallLocIcon),
        font: {
          size: this._defCallLocSize,

提供了可行的解决方案。