我看到了如何使用表达式绑定。
https://sapui5.netweaver.ondemand.com/docs/guide/daf6852a04b44d118963968a1239d2c0.html
我可以使用一小部分函数调用(您可以使用通过全局符号提供的函数,例如Math.max(...)或isNaN(...)。)
我有我的自定义函数isVisible(sParam)
但是我希望将sParam值直接写入xml代码( sParams永远不在模型中),类似这样的
visible='{=isVisible('01 03 05 06')}'
我的想法是将isVisible定义为全局函数,但在调试程序时不要越过函数代码
window.isVisible = function (sParam) {
...
};
的双重问题
答案 0 :(得分:1)
只允许使用特定的全局对象和函数。您可以在sourcecode中看到一个列表,该列表应该是您提供的文档链接中的全局符号列表。
但我刚才有一个想法:
成员访问运营商。操作
您可以创建一个'实用程序' JSONModel
包含函数。 JSONModel
只接受任何javascript对象,并通过绑定路径和数据绑定提供访问权限。因此,您可以通过/
访问根对象,并在结果对象上调用函数:
onInit:function(){
var utility = {
isEven: function(x){
return x % 2 === 0;
}
};
this.getView().setModel(new JSONModel(utility), "utility");
}
<Button text="Hello 1" visible="{:= ${utility>/}.isEven(1) }"/>
<Button text="Hello 2" visible="{:= ${utility>/}.isEven(2) }"/>
您甚至可以通过关闭来访问控制器。
当然,您可以在更高级别(Component
或甚至Core
)定义该实用程序模型。您可以拥有许多实用新型,并且可以在表达式中混合模型:visible="{= ${utility>/}.doSomething(${bla>/blub}, 42) }
(未尝试过)。
请参阅Plunker以获取示例