从XML绑定表达式调用控制器函数

mit*_*tch 6 sapui5

使用OpenUI5/SAPUI5,根据XML绑定表达式的文档,我们可以从视图中执行函数.

new sap.m.CheckBox({
    selected: "{= checkSelectedItems(${odata>CustomerId}) }"
})
Run Code Online (Sandbox Code Playgroud)

在我的控制器后面的视图:

checkSelectedItems: function(sCustomerId) {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我得到一般错误,好像它找不到我的函数:

Uncaught TypeError: Cannot read property 'apply' of undefined
Run Code Online (Sandbox Code Playgroud)

我试过用几种方法调用函数:

{= .checkSelectedItems() }
{= my.namespace.checkSelectedItems() }
Run Code Online (Sandbox Code Playgroud)

我甚至尝试在索引页面的脚本标记中添加一个函数,看看它是否只能访问全局函数,但我也无法触发它.建议?我误解了文档吗?

请在这里查看JS Bin:http://jsbin.com/sosotacihi/edit?html,output.我已经注释掉了有问题的CheckBox,但如果你把它放入,你会看到错误.

小智 3

您需要使用格式化程序从 XML 视图调用控制器的方法。

 new sap.m.CheckBox({
     selected: "{parts:['odata>CustomerId'], formatter:'.checkSelectedItems'}"
 });
Run Code Online (Sandbox Code Playgroud)

这可以应用于任何事件触发属性。提到这一点的通用方法是:

{parts:['<parameter1>', '<parameter2>', ...], formatter:'.<methodInController>'}
Run Code Online (Sandbox Code Playgroud)