TypeError:这个_在Dojo FilteringSelect-onChange回调中未定义url
TypeError: this._url is undefined at Dojo FilteringSelect onChange callback
我在Dojo FilteringSelect的回调中不断收到以下错误:TypeError: this._url is undefined
。
我把我的代码简化为:
var testFeatures = [
{ "id": 1, "Adresa": "Pyšvejcova 6, Kotěhůlky"},
...
];
var filteringSelect = new FilteringSelect({
id: "testSelect",
autoComplete: false,
searchAttr: "Adresa",
store: new Memory({ data: testFeatures }),
onChange: this.onSelected
}, "testSelect");
filteringSelect.startup();
//end of the function, still in the same define callback
onSelected: function () {
//custom processing
var queryTask = new esri.tasks.QueryTask(this.serviceUrl);
var query = new esri.tasks.Query();
query.outFields = ["OBJECTID"];
query.where = "Adresa=" + dojo.byId("testSelect").value;
query.returnGeometry = true;
queryTask.execute(query, this.zoomToSelected);
}
zoomToSelected: function (featureSet) {
//custom map processing
}
和HTML:
<input id="testSelect" data-dojo-attach-point="testSelect" />
我不知道问题出在哪里,谷歌没有发现与我类似的案例。FireBug说错误发生在init.js中。控制台说第199行,但有问题的代码(...nction(){},onExecuteForCountComplete:function(){},onExecuteForExtentComplete:fun...
)在第256行。
问题的一个可能原因可能是ArcGIS JavaScript API或Web AppBuilder——这似乎不是代码中"ArcGIS-heavy"的部分之一,但我不确定。它是ArcGIS JS API 3.15(Dojo 1.10)和面向开发人员的Web AppBuilder 1.4版。
编辑:在@KenFranqueiro和这篇帖子的帮助下,我取得了一些进展。我不能说我完全理解onChange
回调,但我学会了在调用命名函数时省略括号。onSelected
仍然没有被调用,但修改输入数据以包含id
解决了这个问题。但它并没有解决主要问题。。。
现在旧的好的TypeError: this._url is undefined
出现在queryTask.execute
,或者在它和zoomToSelected
方法的开始之间。错误发生的确切位置更改为第256行第351列,参考代码如下:
...e:function(a,b,c,d,f){var m=f.assembly;a=this._encode(n.mixin({},this._url.query...
在"a"后面的=处有一个指针,所以错误似乎在它的右边,试图将不存在的东西与其他东西混合。我不知道init.js
中的this
应该是什么意思。不幸的是,dojo核心代码在没有去模糊处理的情况下几乎是不可调试的。这是我唯一的选择,还是有人知道如何解决?
所以调试init.js
并不那么困难,它将QueryTask
作为this
。据我所知,这不应该有_url
属性。所以我在queryTask
中肯定也有一些错误。
问题的过时部分,存档:
我想知道这个问题是否是由onChange
回调的参数引起的,我真的不明白。我已经阅读了几个带有onChange事件集的DojoFilteringSelect的例子,比如官方的例子。通常它会有一些争论,但我不知道它是什么意思,它从哪里来。在官方示例中,它对应于div id
,而没有其他内容。然而,id
是如何转换为变量的,甚至我认为它是id
的假设是否正确。在这种情况下,详细的文档没有多大帮助。
旧版本:testSelect
是一个对象。它似乎是用dom
隐式创建的——它是this.domNode
的子节点。所以现在我明白了它的来源,但不知道如何准备另一个函数在更改时调用,以及为什么它是正确的语法
此外,我不知道有问题的未定义this._url
应该存在于哪里。在我的示例中,this
指的是dijit,但我不知道init.js
中出现问题的部分的范围是什么。
我不确定这两个子问题(onChange
回调中的混淆和init.js
中对此的识别)有多大关联,我只认为它们是同一问题的症状,因为错误是在我的代码中的onChange事件中抛出的。
查询中的问题是由于this.serviceUrl
作为错误的coontext的一部分丢失,或者是一个对象而不是URL字符串。因此,最后一步是确保(lang/hitch
)使用了正确的上下文,然后将this.serviceUrl
设置为我最初认为的内容,这是之前引用为serviceUrl
的对象的属性之一。
- $http.delete回调未在基本CRUD应用程序中启动
- Meteor.call()回调未向模板返回值
- jQuery AJAX错误回调未运行
- 谷歌地球回调未开火
- Ajax回调未执行
- $.post.done回调未启动,但数据已发布到服务器
- getJSON回调未执行
- 通知.确认回调未触发电话间隙 iOS
- Facebook Javascript SDK 响应回调未触发
- 流星调用回调未执行
- 来自 jQuery 的回调未到达控制器/操作
- jquery延迟对象回调未触发
- 角度$watchCollection回调未捕获对象中的更改
- AngularJS http.jsonp回调未定义
- mongoose异步回调未定义
- 回调未定义不是函数
- 回调-未定义
- JSONP回调未定义
- Jquery回调未定义数组
- ExternalInterface回调未定义