2

このコードが機能する理由:

function onCordovaReady() { 
    navigator.globalization.getLocaleName(function (locale) {
        jQuery.i18n.properties({
            name:'message', 
            path:'lang/', 
            mode:'map',
            language:locale.value,
            callback: function(){
                alert(locale.value);
                alert(jQuery.i18n.prop('msg_hello'));
                alert(jQuery.i18n.prop('msg_complex', 'John'));
            }
        });
    });
}

そして、これはそうではありません:

function onCordovaReady() { 
    navigator.globalization.getLocaleName(function (locale) {
        jQuery.i18n.properties({
            name:'message', 
            path:'lang/', 
            mode:'map',
            language:locale.value,
            callback: onLanguageReady(locale)
        });
    });
}

function onLanguageReady(locale) {
     alert(locale.value);
     alert(jQuery.i18n.prop('msg_hello'));
     alert(jQuery.i18n.prop('msg_complex', 'John'));    
}

コードがきれいに見えるように別の関数でコールバックを作成したいのですが、動作させることができませんでした。最初のアラートは機能しますが (nl_NL と表示されます)、2 番目と 3 番目のアラートは [msg_hello] と [msg_complex] を出力します。

どうもありがとう!

4

3 に答える 3

3

これを試してください:

// beginning of code omitted
callback: function(locale) {
    onLanguageReady(locale)
}
于 2013-05-29T08:39:19.917 に答える
2

undefinedこれは、callbackプロパティに割り当てているためです。

呼び出しonLanguageReadyて、その値をコールバック メソッドに割り当てます。

onLanguageReady解決策は、@romainberger によって指定された関数を呼び出すコールバック関数として別の関数を使用することです。

于 2013-05-29T08:39:45.497 に答える
0
function onCordovaReady() { 
    navigator.globalization.getLocaleName(function (locale) {
        jQuery.i18n.properties({
            name:'message', 
            path:'lang/', 
            mode:'map',
            language:locale.value,
            callback: onLanguageReady
        });
    });
}

function onLanguageReady(locale) {
     alert(locale.value);
     alert(jQuery.i18n.prop('msg_hello'));
     alert(jQuery.i18n.prop('msg_complex', 'John'));    
}

関数がロケールでコールバックする場合に機能します。

コールバックは、実際に関数を実行していると言うときに処理が完了すると呼び出すことができる関数ポインタを期待しているonLanguageReady(locale)ため、関数の結果をコールバックとして割り当てるこの場合、戻り値は何もないundefined

于 2013-05-29T08:39:42.907 に答える