搜索小部件(JSAPI 4.25)使用建议时的事件处理程序

149
5
跳到解决方案
12-06-2022 02:34 PM
Arne_Gelfert
通过
定期撰稿人

在迁移应用程序的过程中,我使用JSAPI 3构建。X到4.x。

试图理解为什么我的“搜索”小部件在我输入它们时显示以下事件……

  • “search-focus”
  • “suggest-start”
  • “suggest_complete”

直到我点击我的“mincharters”的3个建议配置在“SearchSources”和建议显示。当我现在点击其中一个建议时,我得到事件:

  • “search-blur”
  • “search-focus”
  • “搜寻开始”

但是我从来没有看到过允许我获取所选记录及其属性的“搜索完成”。相反,我得到一个错误:

在N.clearGraphics (Search.js:15:492) at N.search (Search.js:16:88) at D.search (Search.js:147:168) at D._handleSuggestionClick (Search.js:169:123) at Object不能读取未定义的属性(读取'remove')handleInterceptedEvent ((index):2486:380)在HTMLLIElement。<匿名>((指数):2502:456)

因为这看起来与图形相关,我确保我有

resultGraphicEnabled:假的,

在我的Search()配置。我有一些自定义CSS调整这个小部件的生活。但我也把它滚回来了,它似乎没有固定的东西。

你知道这是怎么回事吗?为什么我看到这个图形错误?谢谢。

0荣誉
1解决方案

接受的解决方案
JoelBennett
通过
临时贡献者III

对象时发生错误消息所指示的问题图形的属性搜索小部件的视图财产。基本上它说视图的图形属性是未定义的。我只能想到两种可能发生这种情况的情况:(1)观点不是准备好了当这种情况发生时,或者(2)小部件的view属性没有设置为的实例MapView(或SceneView).

当你创建你的搜索小部件时,它可能看起来像这样:

var search = new search ({//etc视图:view //etc});

你传递给视图属性的是什么?

在原帖子中查看解决方案

0荣誉
5回复
ReneRubalcava
通过
经常贡献者II

你有这个问题的代码依赖或github回购样本吗?您是否试图在从建议中选择后才获得搜索结果?还是你想听建议?复制样本可以帮助你纠正错误。下面是Search小部件上的事件列表

https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html events-summar……

0荣誉
Arne_Gelfert
通过
定期撰稿人

谢谢你插话,雷内!我发现自己得到了很好的照顾!!: grinning_face:

我试着复制我在第三节课上做的事情。尽管事情似乎已经改变了。我想显示建议,然后当您选择一个建议(单击它)时,我想从事件中获取该记录。

据我所知,我在3中使用了“搜索结果”。x WebAppBuilder。这似乎已经被“搜索完成”所取代了?

不要让我的代码以我可以轻易复制粘贴到CodePen的形式出现。那得花点时间。我发现,我可以让Search()在一个最小的应用程序中工作,只需要一个搜索小部件。所以这与我搜索的服务或浏览器等无关。

我所做的是将Search小部件放在另一个DOM元素中,我将它添加到view.ui中。这一切都很好,我得到一个小部件和建议。所以我看到其他事件被触发。(我把每一个有记录的事件都记录下来,试图捕捉它们。)我怀疑绑定到

    建议中的
  • 项的事件处理程序是混乱的,因为我为安排搜索窗口所做的一些CSS更改。不知道具体是什么变化。但这是唯一的区别,除了搜索被包装在另一个HTML元素,我能想到。所以我很想知道我如何能证实这一点,并找到一个变通的办法。

    当然,引用一些简化代码的错误没有帮助。

0荣誉
ReneRubalcava
通过
经常贡献者II

我不确定您可能做了哪些更改,但如果您只关心所选结果,那么您可以只侦听搜索完成事件,而忽略其他任何事情。

https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html事件搜索-…

在3x和4x之间有很多变化,事件完全不同。

0荣誉
JoelBennett
通过
临时贡献者III

对象时发生错误消息所指示的问题图形的属性搜索小部件的视图财产。基本上它说视图的图形属性是未定义的。我只能想到两种可能发生这种情况的情况:(1)观点不是准备好了当这种情况发生时,或者(2)小部件的view属性没有设置为的实例MapView(或SceneView).

当你创建你的搜索小部件时,它可能看起来像这样:

var search = new search ({//etc视图:view //etc});

你传递给视图属性的是什么?

0荣誉
Arne_Gelfert
通过
定期撰稿人

谢谢你,伙计们!@ReneRubalcava——嗯,”“搜索完成”是我不太理解的。: beaming_face_with_smiling_eyes:

@JoelBennett-谢谢!我理解了视图属性…但由于我的代码分布在多个JS文件中,并且正在将视图传递到设置Search()的函数中,您的评论让我再看一看,如果我传递一个document.getElementById('viewDiv')…它的工作原理!我只见树木不见森林!我现在可以睡得很香了。谢谢!

0荣誉