2017-09-08 4 views
1

Das Folgende ist eine vereinfachte Version meines Codes.Aufruf einer JavaScript-Funktion in einem Define-Block von einer anderen Funktion im Block

define ([ 
"dojo/dom", 
"dojo/_base/array", 
"dojo/_base/declare", 
"dgrid/OnDemandGrid", 
"dgrid/Selection", 
"dgrid/Keyboard", 
"dijit/form/Button", 
"dojo/store/Memory", 
"dojo/dom-construct", 
"dojo/string", 
"esri/layers/FeatureLayer", 
"esri/tasks/query", 
"esri/tasks/QueryTask", 
"javascript/myUtilities", 
"javascript/myCSV", 
"javascript/myGrid" 
    ], function ( 
dom,arrayUtils,declare,Grid,Selection,Keyboard,Button,Memory,domConstruct,dojoString,FeatureLayer,Query,QueryTask, myUtilities, myCSV, myGrid) { 
return { 
     initializeParkGrid: function(gridid, gridDiv){ 
          //code is here 
          return app.parkGrid; 
          },  
     initializeTrailGrid: function(gridid, gridDiv){ 
           //code is here 
          return app.trailGrid; 
          }, 

     updateParkGrid: function(){  
           //code is here 

           app.parkGrid.on('.dgrid-row:click', function(event){ 
            initializeTrailGrid(); 
           }); 
          }); 
         }         
     }; 
    }); 

Ich möchte die initializeTrailGrid() Funktion aufzurufen, wenn eine Zeile in der app.parkGrid geklickt wird. Wenn ich versuche, es so auszuführen, wie es geschrieben wird, erhalte ich eine Fehlermeldung, dass initializeTrailGrid keine Funktion ist. Wenn ich initializeTrailGrid() von einem Block in einer anderen Datei aufrufen, funktioniert es gut. Der Code, der oben gezeigt wird, ist in der Datei myGrid, also versuchte ich, javascript/myGrid in die Definitionsliste zu setzen und zu verwenden, um ihn zu nennen, aber das hat auch nicht funktioniert. Gibt es eine Möglichkeit, dies zu tun, wie der -Block strukturiert ist?

+0

Sie müssen es importieren. – SLaks

+0

Meine Javascript-Fähigkeiten sind begrenzt. Was meinst du damit, es zu importieren? – ponder275

Antwort

2

ist es besser, eine Klasse zu erstellen:

Myclass = function() { 
    this.initializeParkGrid = function (gridid, gridDiv) { 
     return app.parkGrid; 
    } 
} 

dann auf Click-Ereignis, Call-Methode ... vergessen Sie nicht, um die Klasse zu initialisieren:

var myclass = new Myclass(); 

app.parkGrid.on('.dgrid-row:click', function(event){ 
    myclass.initializeParkGrid(a, b); 
}); 
Verwandte Themen