0
我在二中移动(3.1.0 GA SDK)的项目有一个自定义库,它看起来是这样的:Backbone.Events方面的问题
// lib/MyObject.js
function MyObject
{
var self = this;
_.extend(self, Backbone.Events);
this.trigger('myEvent');
}
module.exports = MyObject;
在我的应用程序的另一部分,我做该类全球上市:
Alloy.Globals.MyObject = require('MyObject');
并在控制器,我实例吧:
var myObj = new Alloy.Globals.MyObject();
这个对象被张望了一下过去了,直到最后添加一个事件侦听器:
// In another controller
myObj.on('myEvent', function() {
console.log('My event happened!');
};
遗憾的是,登录命令不会被调用。如果我在MyObject函数中添加事件侦听器,它可以正常工作。但从对象外部调用它不起作用。
我只是假设那里有一个bug,或者对象被值而不是引用传递,除此之外。如果我将类定义更改为以下内容:
// lib/MyObject.js
function MyObject
{
var self = this;
_.extend(self, Backbone.Events);
var old_on = this.on;
this.on = function(a, b, c) {
return old_on.call(self, a, b, c);
};
this.trigger('myEvent');
}
module.exports = MyObject;
...一切正常。不知何故on
函数没有得到正确的上下文,但我不能为我的生活找出原因。任何人都能洞察到发生了什么?