2014-02-28 22 views
0

我正在使用SAPUI5應用程序。我們使用的是國際化的定位概念,其中我們已經宣佈了我們的應用程序的所有靜態文本屬性和分配的,可用於例如這樣的價值觀對他們說:SAPUI5 i18n oBundle.setText()

var oButton = new sap.ui.commons.Button(); 
oButton.setText(oBundle.getText("LOGIN_BUTTON_NAME")); 

現在我有一個要求,其中某些標籤文本必須根據用戶設置動態更新。這些文本是在i18n包中定義的。所以我在尋找類似:

//Update i18n bundle 
oBundle.setText("USERNAME_LABEL", "Username"); 
//Use updated value 
oLabel.setText(oBundle.getText("USERNAME_LABEL")); 

但我找不到任何地方一個setText()方法。

任何幫助將被深深地承認。

+0

是不是捆綁值常量?爲什麼不使用格式化函數來動態更改標籤綁定 –

+0

Hi Jasper,首先感謝您的回覆。那麼,其實你是對的。他們的確是要成爲常數。我手邊的場景是:有七個標籤應該顯示一週的日子。但是有一個設置允許用戶在星期一或星期日的星期幾之間切換。 – Kumar

+0

無論如何,現在我已經採取了一些解決方法來解決我的問題,而不必更改「常量」。所以,如果沒有答案,我猜沒問題。 – Kumar

回答

1

對不起,我來晚了:d

你不應該這樣做,因爲國際化資源是靜態的文本。

最好的方法是,如果你定義了一個額外的JSONModel 並在那裏加載你想要從你的bundle中更改的數據。

如果你有這樣一個標籤:

<Label text="{/USERNAME_LABEL}" /> 

你可以使用下面的代碼:

var oModel = new JSONModel({ 
    USERNAME_LABEL: oBundle.getText("USERNAME_LABEL") 
}); 

oLabel.setModel(oModel); 

現在要更新文本每一次,你可以這樣做:

var oData = oModel.getData(); 
oData.USERNAME_LABEL = "bla..."; 
oModel.refresh(); 

並且視圖會自動更新。