3

ブラウザエラー

  • TypeError:これは未定義です

関連コード

// 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期待する動作はありません。オブジェクトリテラル内の「進行中」のオブジェクトの値は取りません。オブジェクトを作成し、ハンドラーを設定してから、それを「モジュール」メソッドに渡す必要があります。

次のように、1つの式でそれを行うことができます。

$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 に答える