我试图通过查看一些示例代码来了解一个非常简单的SAP UI5应用程序是如何工作的。问题来自于理解'this'关键字的使用。在这段代码中,我真的不知道哪个对象正在调用该函数,因此它的部分称为“this.nav.to(”Detail“,context);”对我来说很困惑。有一个名为“Master”的XML文件,它有一个执行该函数的按钮,但我不确定调用它的对象实际上是“StandardListItem”,如XML代码所示。
主XML文件的代码和javascript控制器的代码如下所示:
“Master”XML文件:
<core:View
controllerName="sap.ui.demo.myFiori.view.Master"
xmlns="sap.m"
xmlns:core="sap.ui.core" >
<Page
title="~MasterPage~" >
<List
items="{/SalesOrderCollection}" > <!-- This is needed for context after pressing the element -->
<StandardListItem
type="Active"
press="handleListItemPress"
title="{SoId}" /> <!-- The type = "Active" part of the element enables it to be pressed -->
</List>
</Page>
</core:View>
控制器文件(Javascript)
sap.ui.controller("sap.ui.demo.myFiori.view.Master", {
handleListItemPress : function (evt) {
var context = evt.getSource().getBindingContext(); //This refers to the data binding context of the element that is calling the function.
this.nav.to("Detail", context); // In this case 'this' refers to whatever object/element called the function.
}
});
整个示例代码可在此处找到:
http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/60668332-b85d-3110-3fb7-8133d856d3e5
该文档可在此处找到:
答案 0 :(得分:0)
此处this
指控制器(主控制器)sap.ui.demo.myFiori.view.Master
您可以在运行时使用这些变量。提出一个断点,看看“这个”究竟是指什么。
答案 1 :(得分:0)
在您的代码中,视图的类型为XML。因此,任何事件处理程序都会使用控制器的上下文(this)返回控制器。因此,在handleListItemPress()
函数中,this
指的是控制器。但是,如果您尝试使用JS视图,则必须将上下文指定为第二个参数。
例如:
StandardListItem({press:[oController.handleListItemPress(),oController])
正如Sunil所提到的,你总是可以在函数中设置一个断点并找出它所指的内容。