我正在尝试自学一些更好的 JS 开发实践,因此我正在 JavaScript 对象包装器中编写我最新的 VLE 小部件。
var TutorGroupPoints = {
URL: 'http://staff.curriculum.local/frog/rewards.php',
CurrentUser: UWA.Environment.user.id,
Groups: { },
Sorted: [ ],
init: function() {
/* retrieve all of the groups from Frog and store them in a variable */
Frog.API.get('groups.getAll',
{
'onSuccess': function (data) { this.Groups = data; },
'onError': function(err) { alert(err); }
});
},
yearClick: function(year) {
alert( this.Groups );
for (var i = 0; i < this.Groups.length; i++) {
if (this.Groups[i].name.indexOf(year) == 0 && this.Groups[i].name.indexOf('/Tp') != -1) {
var arrayToPush = { 'id': this.Groups[i].id, 'name': this.Groups[i].name };
this.Sorted.push(arrayToPush);
}
}
}
};
widget.onLoad = function(){
TutorGroupPoints.init();
$('#nav li a').click(function() {
TutorGroupPoints.yearClick($(this).attr("id"));
});
}
该Frog.API
呼叫从我们的 VLE(虚拟学习环境)中检索有关学生/员工的信息。
我要做的是将此信息(在名为 的变量中检索data
)存储在类范围变量中,以便与其他函数一起使用。
我以为我已经通过在Groups
早期声明变量然后使用来做到这一点data = this.Groups
,但是当我运行该yearClick
函数时,它this.Groups
只是显示为[object Object]
where data
alerts 作为对象的负载,即[object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object]
.
当我更改Groups
为[ ]
时,警报完全为空。
因此,我猜这是一个范围问题。如何data
将Frog.API
调用存储在可以与其他函数一起使用的变量中?以前我只使用过函数,即,'onSuccess': function (data) { someOtherFunction(data); },
但我认为这不是一种非常干净或实用的方法吗?
提前致谢,