2016-03-02 69 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,不要嘲笑語義,但它沒有「唯一」一詞作爲你的答案。我想這似乎是一個合理的事情來推斷,但老實說,我在閱讀文檔之前,我去尋找答案,並得到的印象是更多的是它可以如何使用,而不是限制的建議。 –