为什么格式化器不能在片段xml中工作

why formatter doesn't work in fragment xml?

本文关键字:xml 工作 片段 格式化 不能 为什么      更新时间:2023-09-26

在我的另一个库中有一个formatter函数,我的目的是使用这个函数。这里是我的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中看到类似的用法。但是这些示例展示了如何从视图而不是从片段访问格式化器。我能够从myView.view.xml到达Formatter.js,但我无法从我的片段到达它。

你能分享你的片段是如何被调用的吗?通常当fragment被调用时,你有一个额外的参数来指定JS对象上下文,像这样

var oFragment = sap.ui.xmlfragment("YourFragment.xml",this);

上面的代码是在控制器中调用的,所以"this"将指向控制器实例,格式函数应该可以工作。