Почему форматтер не работает во фрагменте XML?
В моей другой библиотеке есть функция форматирования, и моя цель - использовать эту функцию. Вот мой Formatter.js:
sap.ui.define([], function () {
"use strict";
var Formatter = {
showAsDate : function(str){...}
};
return Formatter;
});
И в моем фрагменте я использую это как ниже:
<Text text="{
path: 'jsonModel>/date',
formatter : '.Formatter.showAsDate'
}" />
и я вызываю Formatter.js в моем контроллере, как показано ниже:
sap.ui.define(["libpath/Formatter"], function (Formatter){
"use strict";
return Controller.extend("controller.myController", {
Formatter : Formatter,
//I add my fragment to myView with this method
//and I am calling this method in onInit.
_showFormFragment : function (sFragmentName) {
var oPage = this.getView().byId("page");
oPage.removeAllContent();
oPage.insertContent(this._getFormFragment(sFragmentName));
}
});
});
Я использую библиотеку openui5beta. И я закодировал свой вид и контроллеры в соответствии с руководством по прохождению. И вы можете увидеть подобное использование в InvoiceList.controller.js, InvoiceList.view.xml, HelloDialog.fragment.xml. Но эти примеры показывают, как добраться до форматера из вида, а не из фрагмента. Я могу получить доступ к Formatter.js из myView.view.xml, но не могу найти его из своего фрагмента. Любая помощь будет принята с благодарностью.
1 ответ
Можете ли вы поделиться, как ваш фрагмент вызывается? Обычно, когда вызывается фрагмент, у вас есть дополнительный параметр для указания контекста объекта JS, подобного этому
var oFragment = sap.ui.xmlfragment("YourFragment.xml",this);
приведенный выше код вызывается в контроллере, поэтому "this" будет относиться к экземпляру контроллера, и функции форматирования должны работать.