[英]How to implement a SAP UI5 - Cell Formatter in ListReport Template
[英]UI5: how to reuse formatter in other views?
<Text text="{ parts: [ '/firstText', '/number' ], formatter: '.NumberFormatter' }" />
我在 controller 中定義的 XML 視圖中有這個格式化程序。 它工作正常,一切都很好。
如何在另一個 XML 視圖中引用和使用此格式化程序? 保持干燥。
通常格式化程序在他們自己的 JS 文件中
您的項目結構:
- webapp
|-- controller
|-- First.controller.js
|-- Second.controller.js
|-- util
|-- Formatter.js
|-- view
|-- First.view.xml
|-- Second.view.xml
|-- Component.js
|-- index.html
您的 Formatter.js 可能看起來像這樣
sap.ui.define([], function () {
"use strict";
return {
NumberFormatter: function (sText, iNumber) {
...
},
MyOtherFormatter: function(...) {
...
}
};
});
現在每個 controller 都必須引用 Formatter 以使其在您的視圖中可用。
sap.ui.define([
"sap/ui/core/mvc/Controller",
"../util/Formatter"
], function (Controller, Formatter) {
"use strict";
return Controller.extend("demo.controller.First", {
formatter: Formatter, // < Important
onInit : function () {
...
}
});
});
最后你可以在你的視圖中使用它
<m:Text text="{
parts: [
'myModel>firstText',
'myModel>/number'
],
formatter: '.formatter.NumberFormatter'
}" />
請參閱強烈推薦的官方演練的第 23 步,它回答了所有初學者問題的 95%!
使格式化程序成為純粹的? static function模塊:
sap.ui.define([ // Eg in "./model/numberFormatter.js" //... ], function(/*...*/) { "use strict"; //... return function(/*...*/) { return /*...*/; }; });
在您想要的任何地方都需要並使用該格式化程序。 例如,在視圖定義中使用core:require
-syntax (從 UI5 1.69 開始支持):
<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" xmlns:core="sap.ui.core" core:require="{ myFormatter: 'mynamespace/model/numberFormatter' }"> <Text text="{ parts: [/*...*/], formatter: 'myFormatter' }" /> </mvc:View>
除非格式化程序不需要 controller 參考,否則如上所示封裝它可以保持 controller 代碼干凈並且格式化程序也變得更容易進行單元測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.