在Dojo FilteringSelect的回調中,我總是收到以下錯誤:TypeError: this._url is undefined
。TypeError:this._url在Dojo FilteringSelect onChange回調中未定義
我簡化我的代碼如下:
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重」部分之一的代碼,但我不確定。它是ArcGIS JS API 3.15(Dojo 1.10)和適用於開發人員版本1.4的Web AppBuilder。
編輯:幫助@KenFranqueiro和this post我取得了一些進展。我不能說我完全理解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事件集的Dojo FilteringSelect示例,如the official one。通常它有一些爭論,但我不知道它是什麼意思,它從哪裏來。在官方示例中,它對應於div id
,沒有別的。但是,如何將id
轉換爲變量,甚至我的假設是id
是否正確。在這種情況下detailed documentation沒有什麼幫助。
舊版編輯:testSelect
是一個對象。似乎它是由dom
隱含創建的 - 它是一個this.domNode
的子節點。所以現在我明白它來自哪裏,但不知道如何準備另一個函數來調用變化,以及爲什麼正確的語法就是它。
此外,我不知道確切存在問題的未定義this._url
究竟在哪裏。在我的示例中,this
指的是dijit,但我不知道發生問題的部分init.js
的範圍是什麼。
我不知道有多少相關的是兩個子問題(在onChange
回調混亂和init.js
該識別),我只是想他們是同一個問題的症狀,因爲錯誤是在onChange事件中拋出我的代碼。
'onSelected'是什麼?它是一個返回函數的函數嗎?否則,你可能實際上並不想在設置'onChange'時調用它...爲此,testSelect甚至被定義爲一個變量? –
@KenFranqueiro:編輯。我希望現在更清楚。 –