我的另一个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.js,InvoiceList.view.xml,HelloDialog.fragment.xml 中看到相似的用法。但是这些示例显示了如何从视图而不是片段到达格式化程序。我可以从myView.view.xml访问Formatter.js但我无法从我的片段中获取它。任何帮助都将不胜感激。
答案 0 :(得分:4)
你能分享你的片段是如何被调用的吗? 通常在调用fragment时,您有一个额外的参数来指定JS Object上下文,如此
var oFragment = sap.ui.xmlfragment("YourFragment.xml",this);
上面的代码在控制器中调用,所以&#34;这个&#34;将引用控制器实例,格式函数应该工作。