从块中的不同函数调用定义块中的 javascript 函数
Calling a javascript function in a define block from a different function in the 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();
});
});
}
};
});
我想在 app.parkGrid
中单击某行时调用 initializeTrailGrid()
函数。当我尝试 运行 它时,我收到一条错误消息,告诉我 initializeTrailGrid
不是一个函数。如果我从另一个文件中的 define
块调用 initializeTrailGrid()
它工作正常。上面显示的代码在文件 myGrid
中,所以我尝试将 javascript/myGrid
放在定义列表中并使用 myGrid.initializeTrailGrid()
来调用它,但这也没有用。鉴于 define
块的结构,有没有办法做到这一点?
最好创建一个class:
Myclass = function () {
this.initializeParkGrid = function (gridid, gridDiv) {
return app.parkGrid;
}
}
然后,点击事件,调用方法...不要忘记初始化 class:
var myclass = new Myclass();
app.parkGrid.on('.dgrid-row:click', function(event){
myclass.initializeParkGrid(a, b);
});
以下是我的代码的简化版本。
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();
});
});
}
};
});
我想在 app.parkGrid
中单击某行时调用 initializeTrailGrid()
函数。当我尝试 运行 它时,我收到一条错误消息,告诉我 initializeTrailGrid
不是一个函数。如果我从另一个文件中的 define
块调用 initializeTrailGrid()
它工作正常。上面显示的代码在文件 myGrid
中,所以我尝试将 javascript/myGrid
放在定义列表中并使用 myGrid.initializeTrailGrid()
来调用它,但这也没有用。鉴于 define
块的结构,有没有办法做到这一点?
最好创建一个class:
Myclass = function () {
this.initializeParkGrid = function (gridid, gridDiv) {
return app.parkGrid;
}
}
然后,点击事件,调用方法...不要忘记初始化 class:
var myclass = new Myclass();
app.parkGrid.on('.dgrid-row:click', function(event){
myclass.initializeParkGrid(a, b);
});