これらの関数 ( * ) と ( ** ) は 内にありBackbone.View
ますが、この問題を解決するためにバックボーンの知識は必要ないと思います。
コード内の私のコメントからわかるように、次の場合:
1)getAvatar
関数を呼び出すと、すべて
問題ありません。2) getAvatar を呼び出すと、setAvatar
何かが壊れています。
次の問題をどのように修正すればよいですか?
( * )
getAvatar: function ()
{
var creatorIds = this.getCreatorIds();
console.log(creatorIds); // [1,2] ****** here is ok *******
for (var c = 0, l = creatorIds.length; c < l; c += 1) {
if (typeof this.avatars[creatorIds[c]] === 'undefined') {
this.userModel = new UserModel({id: creatorIds[c]});
this.userModel.fetch();
this.userModel.on('change', this.setAvatar, this);
}
}
},
( ** )
setAvatar: function ()
{
console.log(this.userModel.get('id')); // 2, 2 ********* it should be 1, 2 *******
this.names[this.userModel.get('id')] = this.userModel.get('name');
this.avatars[this.userModel.get('id')] = typeof this.userModel.get('avatar');
this.render();
},
( * )
initialize: function ()
{
_.bindAll(this, 'getAvatar', 'setAvatar');
}