浏览器错误
相关代码
// start of module
$A.module({
Name: 'MUserNew',
...
enter: (function (event) {
var pipe = {};
if (event.keyCode === 13) {
pipe = $A.definePipe(this.Name); // **fail here**
$A.machine(pipe);
}
}).bind(this),
...
// inside module as well
this.E.un_go.addEventListener("keypress",
this.enterB,
false);
答案 0 :(得分:4)
您使用.bind()
做了正确的事情,但不幸的是this
没有您期望的行为。它不会占用对象文字中“进行中”对象的值。您必须创建对象,设置处理程序,然后将其传递给“模块”方法。
您仍然可以在一个表达式中执行此操作,如下所示:
$A.module(function() {
var obj = {
// ...
enterB: function(event) { ... },
// ...
};
obj.enterB = obj.enterB.bind(obj);
return obj;
}());
答案 1 :(得分:1)
您需要在函数定义中使用bind(this)
,this
将被定义(未定义)。需要调用该函数。
/*MUserNew
**
**
**
*/
$A.module({
Name: 'MUserNew',
// ....
init: function () {
this.enter = this.enter.bind(this);