Вызов функции JavaScript в определенном блоке из другой функции в блоке

1

Ниже приведен упрощенный вариант моего кода.

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?

  • 0
    Вы должны импортировать это.
  • 0
    Мои навыки JavaScript ограничены. Что вы имеете в виду, импортируя его?
Теги:
arcgis-js-api

1 ответ

2
Лучший ответ

лучше создать класс:

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);
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню