我的Controller文件中有一个名为“ formatCurrency”的函数,但是我无法获取XML Fragment来使用它。
这是我Controller.js文件中的函数:
form_widget(form)
这是我使用它的XML片段文件的一部分:
formatCurrency : function(value){
var d = ".";
var t = ",";
var c = 2;
var p = "$";
c = isNaN(c = Math.abs(c)) ? 2 : c;
var s = value < 0 ? "-" : "";
var i = parseInt(value = Math.abs(+value || 0).toFixed(2)) + "";
var j = (j = i.length) > 3 ? j % 3 : 0;
return p + s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(value - i).toFixed(2).slice(2) : "");
我读到某个地方必须实例化片段?我真的很陌生,所以我不确定该怎么做。我不知道如何将我看到的例子应用于我的案子。
PD:在普通的View.xml文件中使用时,该功能可以完美运行。
任何帮助将不胜感激。
答案 0 :(得分:2)
以下是使它对我有用的4个步骤:
格式化程序文件在 webapp \ model 中定义。
sap.ui.define([], function() {
"use strict";
return {
formatNumber: function(value) {
var result = "";
if (value !== "undefined" && isNumeric(value)) {
result = Number(value).toFixed(2);
}
return result;
}
};
});
sap.ui.define([
"sap/ui/core/mvc/Controller",
"myapp/html/model/formatter"
], function(Controller, formatter) {
"use strict";
return Controller.extend("myapp.html.controller", {
formatter: formatter,
// your code
});
});
您可以在代码中看到以下内容:
<Text text="{path : 'results>value', formatter : '.formatter.formatNumber'}"/>
您可以在代码中看到以下内容:
<ui:core.Fragment fragmentName="myapp.html.fragment.myfragment" type="XML"/>
当然,在添加属性之前,应始终确保在不使用格式程序的情况下显示属性。
希望这会有所帮助
答案 1 :(得分:1)
无论使用什么地方,我都怀疑绑定中可能存在问题。可以这样访问命名的JSON模型中的属性(模型> / Price而不是模型> Price)-({{3} })
<Label text="Price" />
<ObjectNumber number = "{path : 'model>/Price', formatter : '.formatCurrency'}" />
您是否正在Fiori elements应用程序中使用此片段/进行对话?在手动使用片段的情况下,必须实例化它。更重要的是,您需要确保已使用sap.ui.model.json.JSONModel
this.getView().setModel(new sap.ui.model.json.JSONModel({
Price: 23,
.. : .., //Other properties in the model
.. : ..
}), "model");
答案 2 :(得分:0)
如果您通过JavaScript调用片段,则必须为视图“注册”它(其他绑定如i18n和formatter无效)
class Customer {
String name
String email
String phone
}
String infoLine = "Stanislav,stanislav@stackoverflow.com,004612345678"
def customer = [
Customer.declaredFields.findAll { !it.synthetic }*.name,
infoLine.split(',')
].transpose().collectEntries() as Customer
Deprecated since version 1.58:
sap.ui.core.Fragment.load({
type: "XML",
name: '<Namespace>.myFragment'
}).then(function (oFragment) {
this.getView().addDependent(oFragment);
}.bind(this));
另请参见文档:
Example From Tutorial
addDependent