3

浏览器错误

  • 类型错误:这是未定义的

相关代码

// 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);
4

2 回答 2

4

您正在使用 做正确的事情.bind(),但不幸this的是没有您期望的行为。它不采用对象文字内“进行中”对象的值。您必须创建对象,设置处理程序,然后将其传递给您的“模块”方法。

您仍然可以在一个表达式中执行此操作,如下所示:

$A.module(function() {
  var obj = {
    // ... 
    enterB: function(event) { ... },
    // ...
  };
  obj.enterB = obj.enterB.bind(obj);
  return obj;
}());
于 2013-01-19T21:17:06.833 回答
1

你需要bind(this)在函数内部使用定义,this将被定义(不是未定义)。需要调用该函数。

/*MUserNew
**
**
**            
*/
$A.module({
    Name: 'MUserNew',
    // ....
    init: function () {
        this.enter = this.enter.bind(this);
于 2013-01-19T21:46:35.493 回答