为什么格式化程序不能在片段xml中工作?

时间:2015-09-30 08:53:36

标签: javascript fragment formatter sapui5

我的另一个lib中有一个格式化程序功能,我的目的是使用此功能。这是我的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 library。我根据walkthrough sapmle对视图和控制器进行了编码。您可以在InvoiceList.controller.jsInvoiceList.view.xmlHelloDialog.fragment.xml 中看到相似的用法。但是这些示例显示了如何从视图而不是片段到达格式化程序。我可以从myView.view.xml访问Formatter.js但我无法从我的片段中获取它。任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

你能分享你的片段是如何被调用的吗? 通常在调用fragment时,您有一个额外的参数来指定JS Object上下文,如此

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

上面的代码在控制器中调用,所以&#34;这个&#34;将引用控制器实例,格式函数应该工作。