使用OpenUI5 / SAPUI5,根据XML Binding Expressions的文档,我们可以从视图中执行一个函数。
new sap.m.CheckBox({
selected: "{= checkSelectedItems(${odata>CustomerId}) }"
})
在视图后面的我的控制器中:
checkSelectedItems: function(sCustomerId) {
return true;
}
在我看来,我得到了一般错误,好像找不到我的函数一样:
Uncaught TypeError: Cannot read property 'apply' of undefined
我尝试过多种方式调用该函数:
{= .checkSelectedItems() }
{= my.namespace.checkSelectedItems() }
我甚至尝试在索引页面的脚本标记中添加一个函数,看看它是否只能访问全局函数,但我也无法触发它。建议?我是否误解了文档?
请在此处查看JS Bin:http://jsbin.com/sosotacihi/edit?html,output。我已经注意到有问题的CheckBox,但是如果你把它放进去,你就会看到错误。
答案 0 :(得分:2)
您需要使用formatter从XML视图调用控制器的方法。
new sap.m.CheckBox({
selected: "{parts:['odata>CustomerId'], formatter:'.checkSelectedItems'}"
});
这可以应用于任何事件触发属性。提到这一点的一般方法是:
{parts:['<parameter1>', '<parameter2>', ...], formatter:'.<methodInController>'}
答案 1 :(得分:0)
UI5建议使用Expression Binding而不是formatter函数。 Expression绑定主要用于XML视图,不适用于JS视图。
答案 2 :(得分:0)
要在表达式绑定中重用控制器函数,复杂的绑定语法也可以在那里工作:
parts:[{path: ...}]
目前,只有在包含someFn(...)
时才有效。但当然,仅仅因为它起作用,并不意味着我们应该使用它。正如您所看到的,这样的表达式绑定很快就会变得难以理解
如果表达式绑定难以阅读,UI5建议坚持使用格式化函数。
我们建议使用格式化程序函数,而不是非常复杂且难以阅读的表达式。
查看此documentation。
表达式绑定中的语法someFn
仅在Math.max(...)
是全局符号之一时才有效,例如isNaN(...)
或from gspread_pandas import Spread, conf
c = conf.get_config('[Your Path]', '[Your filename]')
spread = Spread('username', 'spreadname', config=c)
。