您好我有以下代码
var idx = 0;
var size = 0;
do {
response.push({
key: "data" + idx,
ajaxOptions: function () {
var data = this.getPref("groupsCN");
var items = data.split(';');
size = items.length;
idx++;
alert('inside index: ' + idx + ' < inside length ' + size);
return {
url: '/rest/adrestresource/1.0/activedirectory/findgroups&test@lab.local&Bezhesla1&localhost&',
type: "GET",
dataType: "xml"
}
}
});
alert('outside index: ' + idx + ' < outside length ' + size);
} while (idx < size);
函数getPref
加载字符串,其中一些值除以;
。重点是迭代所有这些值并用它们做一些事情。但是遵循代码输出
外部指数:0&lt;外部长度:0
所以这意味着函数内部没有修改变量idx
和size
。但我不知道为什么?
我必须在this.getPref()
内调用ajaxOptions -> function
,因为它不能在它之外工作(我不知道为什么,这个函数是Atlassian小工具JavaScript框架的一部分)
答案 0 :(得分:2)
您不是正在执行函数,只是将匿名函数分配给对象文字的属性ajaxOptions
。要执行函数,请使用以下内容:
var idx = 0;
var size = 0;
do {
response.push({
key: "data" + idx,
ajaxOptions: (function () {
var data = this.getPref("groupsCN");
var items = data.split(';');
size = items.length;
idx++;
alert('inside index: ' + idx + ' < inside length ' + size);
return {
url: '/rest/adrestresource/1.0/activedirectory/findgroups&test@lab.local&Bezhesla1&localhost&',
type: "GET",
dataType: "xml"
}
})()
});
alert('outside index: ' + idx + ' < outside length ' + size);
} while (idx < size);
答案 1 :(得分:0)
试试这样:
var idx = 0; var size = 0; var self = this;
和
var data = function () { return self.getPref("groupsCN"); };