【发布时间】:2015-08-12 11:17:41
【问题描述】:
我是 javascript、dojo 和 HTML 的新手,我到处搜索这方面的示例,但找不到任何示例。
我有一张带有一些特征点的地图和一个查找任务,以突出显示地图上的特征点,并将它们显示在带有其字段属性的网格中。当我将搜索字段指定为:
findParams.searchFields = ["LOCATION"];
但如果我添加:
findParams.searchFields = ["LOCATION", "MODEL_NUM"];
网格显示来自多个字段的结果(即,在 LOCATION“A”中搜索属性也会在 MODEL_NUM 中找到包含字母“A”的属性)。所以我决定添加一个下拉菜单选择来指定要搜索的字段(一次一个),以便结果更精确。
所以我添加了以下dijit:
<select id="fieldSelect" data-dojo-type="dijit/form/Select" name="fieldSelect">
<option value="" selected="selected">Select a field</option>
<option value="MODEL_NUM">Model Number</option>
<option value="LOCATION">Location</option>
<option value="NUM_DEFICIENCIES">Number of Deficiencies</option>
<option value="INSTALL_DATE">Install Date</option>
</select>
然后我将搜索字段语句修改为:
findParams.searchFields = "[" + "\"" + dom.byId("fieldSelect").value +
"\"" + "]";
当我点击我的搜索按钮时,我得到一个 Uncaught TypeError: a.join is not a function (FindParameters.js:5)
我希望这是足够的信息。有人有解决方案或建议吗?
更新
在向 findParams.searchFields 传递数组而不是字符串的建议后,我进行了以下更改:
findParams.searchFields = [];
findParmas.searchFields.push(dom.byId("fieldSelect").value);
这仍然给了我来自多个字段的属性结果。运行几个小测试后:
var selectedField = document.getElementById('fieldSelect').value;
var index = selectedField.options[selectedField.selectedIndex].value;
还有:
var selectedField = dom.byId('fieldSelect').value;
我发现在 Chrome 开发人员工具调试器中,当我在该行创建断点并执行语句时,两个示例的 selectedField 值都为“未定义”。
这是没有从下拉选择 dijit 中获取值的问题吗?
如果没有向 findParams.searchFields 传递任何值,API 会假定所有字段都有效,这就是我从多个字段获取属性结果的原因。
谢谢。
【问题讨论】:
标签: arcgis arcgis-server arcgis-js-api