我需要将控件的ID传递给格式化程序。这是我的控制定义:
<Text id="controlId" text="{parts:[{path: 'details>/key1'},{path: 'details>/key2'}], formatter: '.userFormatter._formatField'}"/>
格式化程序在另一个文件中定义:
sap.ui.define(
function(){
"use strict";
return {
_formatField: function(sText1, sText2){
console.log("this ---> ",this);
return sText1 + " - " + sText2;
}
}
相关控制器中的格式化程序定义:
sap.ui.define([
"My/Namespace/controller/BaseController",
"My/Namespace/common/userFieldsFormatter"
], function(BaseController, userFormatter) {
"use strict";
return BaseController.extend("My.Namespace.controller.Detail", {
userFormatter: userFormatter
});
在控制台中,我看到控制器对象(试图对类似问题实施THIS解决方案 - 不起作用)。
答案 0 :(得分:1)
如果您希望将格式化程序功能保留在控制器中(并且 this 的值等于您的UI5控件),您可以在绑定中引用格式化程序,如下所示......
<Text id="controlId" text="{parts:[{path: 'details>/key1'},{path: 'details>/key2'}], formatter: 'My.Namespace.controller.Detail.prototype.userFormatter._formatField'}"/>
...否则您应该能够使用单独的格式化程序功能文件,但需要使用jQuery.sap.require
使用语法.formatterFuncName在绑定中指定的控制器上的任何格式化程序都将使用&#39; this&#39; object作为控制器本身的实例,所有其他场景&#39; this&#39;将是UI5控件的实例
你可以看一下this example,希望能让事情变得更清晰