2016-03-23 16 views
0

Dojo FilteringSelectのコールバックで、次のエラーが発生し続ける:TypeError: this._url is undefinedTypeError:Dojo FilteringSelect onChangeコールバックでthis._urlが未定義

私はこれに私のコードを簡素化:

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重い」部品の1つではないようですしかし、私は確かに分かりません。 ArcGIS JS API 3.15(Dojo 1.10)およびWeb AppBuilder(開発者向けバージョン1.4)です。

編集:@KenFranqueiroとthis postの助けを借りて私は少し進歩しました。私はonChangeコールバックを完全に理解しているとは言えませんが、名前付き関数を呼び出すときにかっこは省略しました。 onSelectedは依然として呼び出されていませんでしたが、入力データを変更してidを含むように修正しました。しかし、それは主要な問題を解決していませんでした...

今や古い良いTypeError: this._url is undefinedqueryTask.executeで、またはそれとzoomToSelectedの方法の間に発生します。エラーがそれの右にあると思われるので、「A」の後に=でポインタが

...e:function(a,b,c,d,f){var m=f.assembly;a=this._encode(n.mixin({},this._url.query... 

があります:とエラーが256行目に変更が起こる正確な場所、列351は、コード参照以下存在しないものと何かを混ぜようとしている。 init.jsthisはどういう意味か分かりません。残念なことに、dojoのコアコードは、難読化されていないものの、ほぼundebuggableです。これは私の唯一の選択肢ですか、それとも誰かが解決する方法を知っていますか?

したがって、init.jsをデバッグすることはそれほど難しくありませんでした。QueryTaskthisとなります。私が知る限り、これは_url属性を持つべきではありません。だから、私はqueryTaskにも間違いがあるはずです。質問、アーカイブの

廃止一部:

私はこの問題は、私は本当に理解していないonChangeコールバックの引数、によって引き起こされる可能性があるかどうかだろう。 the official oneのように、onChangeイベント・セットを持つDojo FilteringSelectのいくつかの例を読んだことがあります。通常、それは何らかの議論をしていますが、私はそれが何を意味するのか、どこから得られるのか分かりません。公式の例では、それはdiv idに相当し、他には何もありません。しかし、idはどのように変数に変換され、それがidであるとの私の前提が正しいかどうかは問わない。 detailed documentationはあまり役に立ちません。

古い編集:testSelectが対象です。それがdomで暗黙的に作成されたと思われます - それはthis.domNodeの子ノードです。ですから、どこから来たのか理解していますが、変更の際に呼び出される別の関数を準備する方法や、正しい構文が何であるかは分かりません。

また、私は正確にどこに問題があるのか​​分からないthis._urlが存在するはずです。私の例では、thisはdijitを指していますが、問題が発生しているinit.jsの部分のスコープが何であるか分かりません。

私は2つのsubquestions(init.jsでこのonChangeコールバックおよび同定に混乱)されているどのくらいの関連わからないんだけど、私はエラーがでonChangeイベントでスローされているので、彼らは同じ問題の症状ですと仮定私のコード。

+0

「onSelected」とは何ですか?それは関数を返す関数ですか?さもなければ、実際には 'onChange'を設定するときに*呼び出すことは実際には望んでいないでしょう...そのために、' testSelect'は変数として定義されていますか? –

+0

@KenFranqueiro:編集済み。私はそれが今より明らかであることを願っています。 –

答えて

0

クエリの問題は、間違ったcoontextの一部として失われたか、URL文字列ではなくオブジェクトであることによってthis.serviceUrlが原因で発生しました。最終的なステップは、正しいコンテキストが(lang/hitchによって)使用されていることを確認してから、this.serviceUrlを私が最初に考えたものに設定することでした。オブジェクトの属性の1つはserviceUrlとして参照されています。

関連する問題