2016-04-05 3 views
0

Ich habe ein Modul, das eine switch-Anweisung enthält, die Inhalt erzeugt, und eine Vielzahl von on Ereignissen, die darauf warten, welcher Inhalt in das DOM eingefügt wird und welcher Trigger aktiviert wird.Dojo 'on' Ereignis von 'byId' triggert TypeError

Ich finde, dass on Event-Handler dom.byId('foo') mit:

on(dom.byId('foo'), touch.press, function(e){

produzieren den Fehler:

Uncaught TypeError: cannot read property 'on' of null.

Ich kann Art, dies verstehen - wenn der Knoten foo noch nicht existiert, weil eine andere Schaltbedingung erfüllt ist, aber ich habe es geschaffen, dies zu umgehen, indem Sie eine CSS-Klasse statt:

on(query('.foo'), touch.press, function(e){

Aber das hat die gleiche Chance der Existenz wie die id!

Ich bin relativ neu in Dojo, und hatte "Spaß" damit in den Griff zu bekommen, und ich bin interessiert zu wissen, warum dies passiert, aber auch wenn es eine Big Red Flag ist, dass ich etwas mache falsch!

Antwort

1

Es ist schwer, ohne den vollständigen Code zu sagen, aber wenn Sie Abfrage verwenden möchten, müssen Sie auf diese Weise verwenden:

require(["dojo/query"], function(query){ 
    query(".foo").on("click", clickHandler); 
}); 

Ich weiß nicht, den Kontext des Projekts, aber wenn es für mobile ist man vielleicht siehe "Dojo/Geste/Tippen" wie in diesem Beispiel im Dokument:

define(["dojo/on", "dojo/gesture/tap", function(listen, tap){ 
on(button, tap, tapHandler); 
... 
Verwandte Themen