我已经定义了一个新的自定义模块:
状态应用内/ formatter.js
sap.ui.define([], function() {
"use strict";
return {
stringToInt: function(value) {
console.log("Called: " + value);
return parseInt(value);
}
}
});
然后在我的控制器中,我将其定义为依赖于演练的Step 23中的依赖项,并添加为控制器属性。
sap.ui.define([
"sap/ui/core/mvc/Controller",
"status-app/formatter"
], function (Controller, formatter) {
"use strict";
return Controller.extend("stibam-status.Main", {
//formatter: formatter,
formatter: {
stringToInt: function(value) {
console.log(value);
return "";
}
},
[...]
});
我已尝试过两种代码变体,但未调用格式化程序。我在onInit-function this.formatter
中打印但是设置正确。为什么我的视图只在我在视图中使用匿名函数时才调用我的格式化程序?
不工作
oColListItem.addCell((new sap.m.Text()).bindText({
path: "statusData>AnzPdf",
formatter: ".formatter.stringToInt"
}));
工作
oColListItem.addCell((new sap.m.Text()).bindText({
path: "statusData>AnzPdf",
formatter: function(value) {
console.log(value);
return parseInt(value);
}
}));
答案 0 :(得分:1)
您为bindText()
方法expects a function提供的属性formatter
的绑定信息。它应该是这样的:
在Controller
内:
oColListItem.addCell((new sap.m.Text()).bindText({
path: "statusData>AnzPdf",
formatter: this.formatter.stringToInt
}));
在JSView
内:
createContent: function(oController){
//...
oColListItem.addCell((new sap.m.Text()).bindText({
path: "statusData>AnzPdf",
formatter: oController.formatter.stringToInt
}));
//...
}
您引用的演练使用了XMLViews。在XMLView中,XMLTemplateProcessor从属性值(普通字符串)中解析绑定信息。它解析了Controller
View
上的“.formatter”等值。
当您在JSView
中使用Control
或创建Controller
时,您可以直接提供BindingInfo对象。不涉及字符串解析。
答案 1 :(得分:0)
我用这段代码解决了这个问题。
return Controller.extend("convanl.ConvAnualDesemp.controller.View1", {
formatter: formatter,
----------------------------
var oTemplate = new sap.m.ColumnListItem({
cells: [
new sap.m.Text().bindText({
path: "Rut",
formatter: that.formatter.entregaRutFormateado}),
new sap.m.Text({
text: "{DescEstado}"
})]});