次のように私はいくつかのコードを持っている -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();
だから私はreceivedEvent
内function backbutton()
にイベント「戻るボタン」をバインドする必要があります。 function backbutton()
はreceivedEvent
(formFadeIn()
など)のローカル関数を呼び出しています。
バインディングの正確な構文を理解することができません。
this.receivedEvent.backbutton
//応答がないthis.receivedEvent.backbutton()
//応答がないthis.receivedEvent.bind(this).backbutton
//ページ- で無限ループが発生するが - 私が試した何
backbutton()関数を
return { backbutton : backbutton }
としてエクスポートする//応答がない
私は、コンテキストを失うことなくapp.initialize()
からfunction backbutton()
にアクセスするためにしなければならないのですか?
myBackButtonFunctionはreceivedEvent内に含まれる他の機能を呼び出すに依存している - ので、残念ながら、これは動作しません。 – rkmr