jQuery Mobileを使用してモバイルアプリケーションを開発し始めています。 HTML静的ページを作成して表示する前に、サーバーに電話をかけて、入力ラベルとボタンのi18nテキストを取得します。ボタンについてjQueryモバイル:モバイル拡張前のjson処理
<label data-i18n="login.username" for="loginPaciente.username">login.username</label>
:ラベルの
: "データ-I18N":私は、特別な属性を持つ内部テキストを変更することが影響を受けやすいHTML要素をマーク
<button data-i18n="login.submit" type="submit" data-theme="a">login.submit</button>
$('#pageLogin').live('pagebeforeshow',function(event, ui){
var action = "/MyServerApp/namespace1/mobile_Action_Login_configPage.action";
$.getJSON(action, function(data) {
var resources = data.i18n_resources;
var id, text;
var $scope = $('#pageLogin');
for (i=0; i<resources.length; i++){
id = resources[i].id;
text = resources[i].text;
$scope.find('[data-i18n="' + id + '"]').html(text);
}
});
});
JQMはmodifではないので、これはラベルと完全に一致しますこれらのHTML要素。 JQMは私が定義したボタンを隠し、ボタンをレンダリングするための新しいスパンを作成するので、ボタンに問題があります。 JSONの結果を読むと、私が定義したボタンを見つけて変更することができますが、JQMが作成した新しいスパンではないので、画面に表示されるテキストは古いものです: "login.submit"。
JQMがHTMLコードを変更する前にJSON呼び出しを実行する方法はありますか?
PD:HTMLページ全体を動的に(i18nテキストを含めて)構築しない理由は、今後、WebアプリケーションをPhoneGapなどのシェルでカプセル化してHTMLページを配布したいからです。アプリケーション内のCSSとスクリプトを使用して、サーバーとのデータトラフィックを最小限に抑えます。事前に
ありがとう:
カルロス。
EDIT:テキストを変更してから$scope.trigger('create')
を呼び出しても問題は解決しません。
あなたのお返事ありがとうございます、Jasper。あなたがコメントしたように、内部htmlを翻訳するために、どのタグにも "data-i18n"属性を適用したいと思います。私は別の回避策を見つけました。今はbuttonタグは使用しませんが、data-role = buttonのdivを使用します。この場合、JQMはdiv内にスパンを作成し、テキストをオーバーライドする必要があるときに正確なスパンを見つけるのは簡単です。私は、このソリューションは私が今使っていない他のUIコントロールではうまくいかないと思います。しかし本当の問題は、JQMが "beforeMobileEnhancement"関数を呼び出してDOMに動的コンテンツを注入できるかどうかです。 –