如何调用在匿名函数中定义但都在同一JS文件中的函数。这是我的代码段。如何从_testMethodInside()
呼叫testMethodOutside()
?
// Line 1 to 13 is an existing code from ESRI API
define([
"dojo/_base/declare",
"dojo/_base/html"
], function (
declare,
html
) {
return declare([_WidgetBase, _TemplatedMixin], {
_testMethodInside: function () {
return 'success';
}
});
});
//Call above using this function
function testMethodOutside(){
//How to call _testMethodInside() function from here
}
答案 0 :(得分:2)
遵循Dojo文档。 define
块定义一个模块。您没有指定模块ID(可以通过显式传递,也可以从文件名中推断出来),因此我将继续进行操作,就好像模块名为my/Example
。
require(['my/Example'], function(Example) {
var example = new Example();
example._testMethodInside(); // here is where you call _testMethodInside
}
关键是因为模块是异步加载的,所以唯一可以放心调用的地方是传递给(AMD) require
的回调函数。
答案 1 :(得分:2)
使用esri的Web应用程序构建器,您通常可以:
1)将所有代码包含在define / require中 2)将其分为两个模块
这就是应该进行流程设计的方式,例如:
file1.js:
define([
"dojo/_base/declare",
"dojo/_base/html"
], function (
declare,
html
) {
return declare([_WidgetBase, _TemplatedMixin], {
_testMethodInside: function () {
return 'success';
}
});
});
file2.js:
require([
'./file1'
], function (File1) {
File1._testMethodInside();
})
此外,以下划线开头的方法名称是指定私有方法的常见设计选择,因此_testMethodInside仅应由file1真正调用
答案 2 :(得分:0)
如果它只是_testMethodInside
方法和testMethodOutside
函数的常用功能,请考虑以下几点:
function sharedFunction() {
return 'success';
}
function testMethodOutside() {
sharedFunction();
}
define([
"dojo/_base/declare",
"dojo/_base/html"
], function (declare, html) {
return declare([_WidgetBase, _TemplatedMixin], {
_testMethodInside: sharedFunction
});
});