8年前我使用dojo
,所以我对dojo
1.7+非常新。我想定义一个带参数的方法,但它对dojo
模块(lang)也有要求。所以我尝试了以下内容。
<script>
function fillReportTable(repId) {
require(['dojo/_base/lang'], function(lang) {
//just example calls to lang..
var obj = { a:"b", c:"d" };
var thing = lang.clone(obj);
repId = repId + 1;
});
return repId;
};
alert(fillReportTable(13))
</script>
但alert(fillReportTable(13))
显示整个函数定义而不是数字14.我缺少什么?
答案 0 :(得分:1)
如果您要使用dojo
,那么几乎所有都需要AMD module
,可能只需vanilla Javascipt
。因此,您可以将您的功能转换为AMD module
并且很容易
myApp / fillReportTable.js
define(['dojo/_base/lang'],function (lang)
{
return function fillReportTable(repId) {
var obj = { a:"b", c:"d" };
var thing = lang.clone(obj);
return repId + 1;
}
});
然后,你可以require
require(["myApp/fillReportTable"], function( fillReportTable )
{
console.log(fillReportTable(123));
});
但如果继续使用您的方法,则可以使用Promise
function fillReportTable(repId){
return new Promise(function(resolve){
require(['dojo/_base/lang'],function (lang){
var obj = { a:"b", c:"d" };
var thing = lang.clone(obj);
resolve(repId + 1);
});
});
};
如何使用
fillReportTable('Hello World').then(function(repId){
console.log(repId);
});
请注意,Promise
是ECMAScript6 feature
希望有所帮助