2017-02-01 16 views
0

Dojoを使用しているプロジェクトを継承し、実際には異常なエラーが発生しています。dojo registry.byIdは、イベントによって呼び出される関数でnullを戻します。

メニューは機能が

function onShowSnapshot(e) { 
     var mi = registry.byId(e.target.id); 
     current_snapshot = mi.data; 
     showSnapshot(); 
} 

と呼ばれるが、idは正しいですが、マイルがnullの場合、そのそれはウィジェットを見つける傾けるように取得しますAJAX呼び出し

mi = new dijit.MenuItem({ label:"Snapshot " + ro.name, onClick:onShowSnapshot }); 
mi.data = ro.auid; 
snap_show.addChild(mi); 

からの結果を使用して構築されています

Dojoのバージョンは1.10

このページのほとんどの機能は動作しますが、メニューからのイベントは常にこのエラーを生成します。

答えて

0

「e」オブジェクトをコンソールに出力することで設定とテストを推測する残りのコードはわかりません...あなたのコードで次の行を修正すると、

var mi = registry.byId(e.target.parentNode.id); 

実施例

は、ここでは、「データ」はonclickイベント後のコンソールに出力されている場所を見ることができます:それはあなたがハンドラになっているターゲットのように見える

https://jsfiddle.net/538g8aet/6/

+0

最後に、私は無名関数にも行きました。問題全体を解決しました。 – Jules

+0

素晴らしいもの。答えをマークしてください:) –

0

MenuI内のいくつかのノードですメニュー項目自体の.domNodeは表示されません。メニュー項目のラベルを含むノードが表示されます。

あなたができることは、registry .getEnclosingWidgetを使用してウィジェットにアクセスすることです。これは、n関数がすべてのメニュー項目を処理することを望まない場合に便利です。

function onShowSnapshot(e) { 
     var mi = registry.getEnclosingWidget(e.target); 
     current_snapshot = mi.data; 
     showSnapshot(); 
} 
関連する問題