私は自分自身にもっと良い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]
data
[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); },
たが、それは非常にクリーンで実用的な方法ではないと思いますか?
前もって感謝します、