2016-03-02 71 views
1

问题是使用1.28引入的expression binding打印出当前年份。函数调用OpenUI5/SAPUI5中的表达式绑定

表达式绑定能够执行全局可访问的JS函数。

目标:在表达式执行(新日期())和getFullYear()结合

  • this JSFiddle第一次尝试时执行全局字符串。{:= Math.PI} =>工作
  • 第二次尝试是定义一个全局函数window.temp = function() {return 'test'};并经由<Text text="{:=temp()}" />执行它=>失败
  • 目标<Input value="{:=(new Date()).getFullYear()}" />场所解析器和是的jsfiddle为此outcommented。 错误信息被预期),而是看到日期在9位 - {:=(新的Date())和getFullYear()} sap.ui.base.ExpressionParser

第一个问题是:为什么解析器中断?这是一个错误还是我做错了什么?

第二个问题是:即使目标是不可能的。为什么我的第二次尝试也不起作用?

回答

1

我认为解析器破坏了,因为它不支持新的运算符。你的第二个例子不起作用,因为只有通过全局符号可用的函数才可以使用。 窗口对象不在那里列出。

+0

Re“可以使用通过全局符号可用的唯一功能”: 如果有文档记录,会不错。在找到你的答案之前,我已经花费了很多年了。 –

+0

嗨,彼得,这是记录。从语法元素函数调用的文档:“您可以使用通过全局符号可用的函数,如Math.max(...)或isNaN(...)。” – matbtt

+0

嗨matbtt,不要嘲笑语义,但它没有“唯一”一词作为你的答案。我想这似乎是一个合理的事情来推断,但老实说,我在阅读文档之前,我去寻找答案,并得到的印象是更多的是它可以如何使用,而不是限制的建议。 –