SAP UI5(javascript)示例 - 'this'关键字混淆

时间:2015-05-05 20:35:42

标签: sap sapui5

我试图通过查看一些示例代码来了解一个非常简单的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

该文档可在此处找到:

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/8022ac87-1f60-3110-5383-fa68a91d7f8b?QuickLink=index&overridelayout=true&59017145622993

2 个答案:

答案 0 :(得分:0)

此处this指控制器(主控制器)sap.ui.demo.myFiori.view.Master

您可以在运行时使用这些变量。提出一个断点,看看“这个”究竟是指什么。

答案 1 :(得分:0)

在您的代码中,视图的类型为XML。因此,任何事件处理程序都会使用控制器的上下文(this)返回控制器。因此,在handleListItemPress()函数中,this指的是控制器。但是,如果您尝试使用JS视图,则必须将上下文指定为第二个参数。 例如:     StandardListItem({press:[oController.handleListItemPress(),oController])

正如Sunil所提到的,你总是可以在函数中设置一个断点并找出它所指的内容。