2017-04-23 22 views
0

次のように私はいくつかのコードを持っている -javascriptのオブジェクトリテラル内の関数内の関数にアクセスするには?

var app = { 
    initialize: function() { 
     document.addEventListener('deviceready', this.onDeviceReady.bind(this), false); 
     document.addEventListener('backbutton',this.receivedEvent.backbutton(),false); 
                ^-- //not working 
    }, 

    onDeviceReady: function() { 
     this.receivedEvent('deviceready'); 
    }, 

receivedEvent: function(id) { 
    var originalLocation, partnership; 

    function fadeOut(element, direction) { 
     .... 
    }; 

    function fadeIn(element, direction) { 
     ..... 
    } 

    function formFadeIn(direction) { 
     fadeIn($("#dataform"), direction); 
    }; 

    function formFadeOut(direction) { 
     fadeOut($("#dataform"), direction); 
    }; 

    function backbutton() { 
     var current = $("#home").attr("page-current"); 
     var prev = $("#home").attr("page-prev"); 
     if (current == "dataform" && prev == "partnertype") { 
      formFadeOut("opposite"); 
      partnertypeFadeIn("opposite"); 
      setPage("country", "partnertype") 
      $("#selectcountry").attr("disabled", false).val("AF") 
     } else if (current == "dataform" && prev == "country") { 
      formFadeOut("opposite"); 
      countryFadeIn("opposite"); 
     } else if (current == "partnertype" && prev == "country") { 
      partnertypeFadeOut("opposite"); 
      countryFadeIn("opposite"); 
     } else { 
      window.location.reload() 
     } 
    } 
} 
}; 

app.initialize(); 

だから私はreceivedEventfunction backbutton()にイベント「戻るボタン」をバインドする必要があります。 function backbutton()receivedEventformFadeIn()など)のローカル関数を呼び出しています。

バインディングの正確な構文を理解することができません。

  1. this.receivedEvent.backbutton //応答がない

  2. this.receivedEvent.backbutton() //応答がない

  3. this.receivedEvent.bind(this).backbutton //ページ

  4. で無限ループが発生するが - 私が試した何

    backbutton()関数をreturn { backbutton : backbutton }としてエクスポートする//応答がない

私は、コンテキストを失うことなくapp.initialize()からfunction backbutton()にアクセスするためにしなければならないのですか?

答えて

0

あなたは試みることができる:

var app = { 
    initialize: function() { 
    document.addEventListener('backbutton',this.myBackButtonFunction, false); 
    }, 

    myBackButtonFunction: function() { 
    // Your code 
    } 
    receivedEvent: function(id) { 
    // Can also be invoked from here 
    this.myBackButtonFunction(); 
    }, 

}; 


app.initialize(); 
+0

myBackButtonFunctionはreceivedEvent内に含まれる他の機能を呼び出すに依存している - ので、残念ながら、これは動作しません。 – rkmr

関連する問題