Sapui5 通过控制';s ID到格式化程序函数

Sapui5 通过控制';s ID到格式化程序函数,sapui5,Sapui5,我需要将控件的ID传递给格式化程序。以下是我的控件定义: 格式化程序在另一个文件中定义: sap.ui.define( 函数(){ “严格使用”; 返回{ _formatField:函数(sText1、sText2){ log(“this-->”,this); 返回sText1+“-”+sText2; } } 相关控制器中的格式化程序定义: sap.ui.define([ “我的/Namespace/controller/BaseController”, “My/Namespace/com

我需要将控件的ID传递给格式化程序。以下是我的控件定义:


格式化程序在另一个文件中定义:

sap.ui.define(
函数(){
“严格使用”;
返回{
_formatField:函数(sText1、sText2){
log(“this-->”,this);
返回sText1+“-”+sText2;
}
}
相关控制器中的格式化程序定义:

sap.ui.define([
“我的/Namespace/controller/BaseController”,
“My/Namespace/common/UserFields格式”
],函数(BaseController、userFormatter){
“严格使用”;
返回BaseController.extend(“My.Namespace.controller.Detail”{
userFormatter:userFormatter
});

在控制台中,我看到控制器对象(试图实现类似问题的解决方案-不起作用)。

如果您希望将格式化程序函数保留在控制器中(并且其值等于UI5控件),可以在绑定中引用格式化程序,如下所示

<Text id="controlId" text="{parts:[{path: 'details>/key1'},{path: 'details>/key2'}], formatter: 'My.Namespace.controller.Detail.prototype.userFormatter._formatField'}"/>

…否则,您应该能够使用单独的格式化程序函数文件,但需要使用

在绑定中使用语法指定的控制器上的任何格式化程序。将使用“this”对象作为控制器本身的实例调用formatterFuncName,所有其他场景“this”将作为UI5控件的实例


您可以看一看希望能让事情更清楚一点的解决方案

在使用您所引用的解决方案(将formatter指定为My.Namespace.common.userFieldsFormatter.\u FormattField)时会出现什么错误?这是将格式化程序函数中的上下文更改为控件的正确方法itself@IanMacGregor我没有收到任何错误,它可以正常工作,但是
this
的上下文是控制器,而不是控件。如果我确实将格式化程序函数指定为
formatter:'My.Namespace.common.userFieldsFormatter.\u foformatField'
,我得到了
格式化程序函数My.Namespace.common.userFieldsFormatter.\u formatField未找到!
错误。我不确定我是否正确理解了我在前面提到的示例中所做的工作与您的解决方案之间的区别。这是一个简单的问题示例。您能展示一下您的解决方案吗n链接的代码?已更新到您的JS Bin克隆(更新)版本的链接,如果您有任何问题,请告诉我示例!谢谢!对我来说,它仅在“.formatterFuncName”中有效以“this”作为控制器;在任何其他情况下“无法找到格式化程序功能”为什么?我正在通过WebIde开发,因此我猜必须加载本地文件,并且无法直接访问。