2017-02-15 75 views
0

ID我需要一個控件的ID傳遞給格式化。這是我控制的定義:Pass Control技術對格式化功能

<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

你使用你做參考的解決方案時,你得到了什麼錯誤的事情更清楚一點的實例(指定格式化爲My.Namespace.common.userFieldsFormatter._formatField)?這將是正確的方式來改變格式化函數內的這個內容作爲控制本身 –

+0

@IanMacGregor我不'得到任何錯誤,它工作正常,但'this'的上下文是控制器,而不是控制。如果我做指定格式化功能'格式:「My.Namespace.common.userFieldsFormatter._formatField'',我得到'格式化功能My.Namespace.common.userFieldsFormatter._formatField沒有發現'的錯誤! – keshet

回答

1

如果你想保持你的格式化功能,在你的控制器(和有值這個等於你UI5控制),你可以在你的綁定如下引用格式...

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

......否則,你應該能夠使用一個單獨的格式化功能的文件,但需要將要求它使用jQuery.sap.require

在使用語法.formatterFuncName將與「此」對象被稱爲綁定指定控制器上的任何格式控制器本身的實例,所有其他情況「這個」將是UI5控制的

您可以在this example看看它應該有希望使

+0

我不確定我是否正確理解在我提及的示例中所做的或我所做的和您的解決方案之間的區別。 [這裏](http://jsbin.com/fagehuvuho/1/edit?html,output)是這個問題的一個簡單例子。您能否在鏈接的代碼中顯示您的解決方案? – keshet

+0

已經更新了一個鏈接到您的JS Bin的克隆(更新)版本,讓我知道如果您有任何問題 –

+0

優秀的例子!謝謝! – keshet