在我的另一个库中有一个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"将指向控制器实例,格式函数应该可以工作。