Ниже приведен упрощенный вариант моего кода.
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();
});
});
}
};
});
Я хочу вызвать функцию initializeTrailGrid()
всякий раз, когда нажимается строка в app.parkGrid
. Когда я пытаюсь запустить его, поскольку он написан, я получаю сообщение об ошибке, указывающее, что initializeTrailGrid
не является функцией. Если я вызываю initializeTrailGrid()
из блока define
в другом файле, он отлично работает. Код, показанный выше, находится в файле myGrid
поэтому я попытался поместить javascript/myGrid
в список определений и использовать myGrid.initializeTrailGrid()
чтобы вызвать его, но это тоже не сработало. Есть ли способ сделать это, учитывая, как структурирован блок define
?
лучше создать класс:
Myclass = function () {
this.initializeParkGrid = function (gridid, gridDiv) {
return app.parkGrid;
}
}
затем, при нажатии события, метод вызова... не забудьте инициализировать класс:
var myclass = new Myclass();
app.parkGrid.on('.dgrid-row:click', function(event){
myclass.initializeParkGrid(a, b);
});