使用jQuery调用SAP UI5的控制器功能

时间:2018-01-20 16:39:27

标签: jquery sapui5

有没有办法在控制器的init()函数内部编写的jQuery语法中调用SAP UI5控制器函数? 我的意思是我在user.controller.js的init()中写了下面的代码片段。我有一个函数checkId()写在同一个控制器里面,我想在下面的代码片段中调用。如何做到这一点? 我的代码:

    $(window).load(function(){
       $("#myid").mousedown(function(){
         this.checkId(); //returns is not a function
       });
    });

1 个答案:

答案 0 :(得分:1)

这与this关键字在JavaScript中的工作方式密切相关。查看How does the "this" keyword work?了解详情。

您有三种不同的可能性来克服您所面临的问题:

1)别名this(将其存储到变量中):

var oController = this;
$(window).load(function(){
    $("#myid").mousedown(function(){
         oController.checkId();
    });
});

2)重新绑定内部函数的this上下文(使用例如.bindjQuery.proxy):

$(window).load(function(){
    $("#myid").mousedown(function(){
         this.checkId();
    }.bind(this));
}.bind(this));

3)使用ES6 arrow functions(如果您没有遇到与浏览器支持相关的问题或者您有转换构建设置):

$(window).load(() => $("#myid").mousedown(() => this.checkId()));

此外,您应该尽可能避免在UI5中手动添加DOM事件处理程序。您只需使用UI5按钮并将方法附加到UI5 press事件即可。