Почему форматтер не работает во фрагменте 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" будет относиться к экземпляру контроллера, и функции форматирования должны работать.

Другие вопросы по тегам