dijit/form/select 到 select Arc JS 中的搜索字段 API
dijit/form/select to select search fields in Arc JS API
我是 javascript、dojo 和 HTML 的新手,我到处搜索这方面的例子,但找不到。
我有一个包含一些特征点的地图和一个查找任务来突出显示地图上的特征点,并将它们显示在具有字段属性的网格中。当我将搜索字段指定为:
时效果很好
findParams.searchFields = ["LOCATION"];
但是如果我添加:
findParams.searchFields = ["LOCATION", "MODEL_NUM"];
网格显示来自多个字段的结果(即在 LOCATION "A" 中搜索属性也会在 MODEL_NUM 中找到包含字母 "A" 的属性)。所以我决定添加一个下拉菜单 select 来指定要搜索的字段(一次一个),这样结果会更精确。
所以我添加了以下 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 +
"\"" + "]";
当我点击我的搜索按钮时,我得到一个未捕获的类型错误:a.join 不是一个函数 (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 值为 'undefined'.
这是没有从下拉列表中获取值的问题吗select dijit?
如果没有值传递给 findParams.searchFields,API 假定所有字段都有效,这就是我从多个字段获取属性结果的原因。
谢谢。
使用 dijit.byId
而不是 dom.byId
。
以下对我有效:
var value = dijit.byId("fieldSelect").value;
if ("" != value) {
findParams.searchFields = [value];
} else {
findParams.searchFields = ["MODEL_NUM", "LOCATION", "NUM_DEFICIENCIES", "INSTALL_DATE"];
}
我发现了问题。
最终是 registry.byId
引导我找到答案,在我意识到 searchFields
在错误的函数中而不是在调用时调用的函数中后,我不得不重新安排一些代码我点击搜索按钮。
但是在访问 dijit 时,唯一有效的是 registry.byId
访问 dijit 节点并将所选值的值传递到我的 searchFields。
谢谢。
我是 javascript、dojo 和 HTML 的新手,我到处搜索这方面的例子,但找不到。
我有一个包含一些特征点的地图和一个查找任务来突出显示地图上的特征点,并将它们显示在具有字段属性的网格中。当我将搜索字段指定为:
时效果很好findParams.searchFields = ["LOCATION"];
但是如果我添加:
findParams.searchFields = ["LOCATION", "MODEL_NUM"];
网格显示来自多个字段的结果(即在 LOCATION "A" 中搜索属性也会在 MODEL_NUM 中找到包含字母 "A" 的属性)。所以我决定添加一个下拉菜单 select 来指定要搜索的字段(一次一个),这样结果会更精确。
所以我添加了以下 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 +
"\"" + "]";
当我点击我的搜索按钮时,我得到一个未捕获的类型错误:a.join 不是一个函数 (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 值为 'undefined'.
这是没有从下拉列表中获取值的问题吗select dijit?
如果没有值传递给 findParams.searchFields,API 假定所有字段都有效,这就是我从多个字段获取属性结果的原因。
谢谢。
使用 dijit.byId
而不是 dom.byId
。
以下对我有效:
var value = dijit.byId("fieldSelect").value;
if ("" != value) {
findParams.searchFields = [value];
} else {
findParams.searchFields = ["MODEL_NUM", "LOCATION", "NUM_DEFICIENCIES", "INSTALL_DATE"];
}
我发现了问题。
最终是 registry.byId
引导我找到答案,在我意识到 searchFields
在错误的函数中而不是在调用时调用的函数中后,我不得不重新安排一些代码我点击搜索按钮。
但是在访问 dijit 时,唯一有效的是 registry.byId
访问 dijit 节点并将所选值的值传递到我的 searchFields。
谢谢。