2015-05-08 67 views
2

我想調用一個格式化程序。例如將文本轉換爲大寫。我有兩個格式化器,一個在控制器中,一個在utils文件夾中全局使用。SAPUI5格式化程序不叫

我試圖調用兩者,但沒有調用。 ?有人可以幫我請:(

我在utils的文件夾中的全球格式化:

jQuery.sap.declare("my.app.util.Formatter"); 
my.app.util.Formatter = { 

    toUpperCase: function(sStr) { 
     return sStr.toUpperCase(); 
    } 

}; 

,並在我的控制器的一個格式(我做的需要$.sap.require("my.app.util.Formatter");以及):

myControllerToUpperCaseFormatter : function(sStr) { 
    console.log('I WILL DO NOTHING!'); 
    return sStr.toUpperCase(); 
} 

我的XML:

<mvc:View controllerName="my.app.view.XXX" 
xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns:l="sap.ui.layout" 
xmlns:f="sap.ui.layout.form" xmlns:c="sap.ui.core" xmlns="sap.m"> 
<Page class="sapUiFioriObjectPage" title="Test"> 
    <content> 

     <Button text="{path: 'MyModel>/name', formatter: 'my.app.util.Formatter.toUpperCase'}"></Button> 

     <Button text="{path: 'MyModel>/name', formatter: '.myControllerToUpperCaseFormatter' }"></Button> 

    </content> 
</Page> 

感謝您的幫助!

+0

您是否在UI5引導中指定了您希望支持「複雜」綁定語法? 'data-sap-ui-xx-bindingSyntax =「complex」' – qmacro

+0

Thanks @qmacro。現在它確實像魅力一樣工作! – ale

回答

1

您結合不完全正確

MyModel>/name //它指出的名字是在數據屬性層次的根屬性。 正確的方法:

<Button text="{path: 'MyModel>name', formatter: '.myControllerToUpperCaseFormatter' }"></Button> 

不過,我也有時遇到過這個問題!

由於某些原因,當使用兩個或多個參數時,它開始工作。

實施例:

<Button text="{parts:[{path:'MyModel>name'},{path:'MyModel>somethingElse'}],formatter: '.myControllerToUpperCaseFormatter' }"></Button> 

其他解決方案:

看起來你從UI控制器綁定中的數據。 如果是,請格式化所需的數據,然後將其設置爲模型。

+0

'MyModel>/name'並不意味着一個集合,它只是聲明該名稱是數據屬性層次結構根部的一個屬性。 – qmacro

+0

那麼上面的答案是錯的? –

+0

假設/ name是一個集合是錯誤的,就這些。 – qmacro