欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Fiori学习笔记 - 事件之常用控件

程序员文章站 2024-03-16 10:23:10
...

在Fiori开发过程中,CheckBox、Select,List控件会经常用到,本文记录了这三种控件的事件定义、触发的用法。

Fiori学习笔记 - 事件之常用控件

view

<mvc:View controllerName="demo.eventDemoCase.controller.FirstView" xmlns:html="http://www.w3.org/1999/xhtml"
    xmlns:mvc="sap.ui.core.mvc" displayBlock="true" xmlns="sap.m" xmlns:core="sap.ui.core">
    <App>
        <pages>
            <Page title="{i18n>title}">
                <content>
                    <CheckBox text="testCheckBoxEvent" select="selectedCheckBox"></CheckBox>
                    <Select items="{path: '/UserList'}" change="selectionChange">
                        <core:Item key="{ID}" text="{Name}"/>
                    </Select>
                    <List headerText="My Test List" selectionChange="onSelectionChange" itemPress="onSelectionChange"
                        mode="{= ${device>/system/phone} ? 'None' : 'SingleSelectMaster'}" items="{path: '/UserList'}">
                        <items>
                            <CustomListItem type="{= ${device>/system/phone} ? 'Active' : 'Inactive'}">
                                <HBox class="sapUiSmallMarginBegin sapUiSmallMarginTopBottom">
                                    <Label text="{Name}"/>
                                </HBox>
                            </CustomListItem>
                        </items>
                        <swipeContent>
                            <Button text="Delete Item" type="Reject" press="handleReject"/>
                        </swipeContent>
                    </List>
                </content>
            </Page>
        </pages>
    </App>
</mvc:View>

controller

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/model/json/JSONModel",
    "sap/m/MessageToast"
], function(Controller, JSONModel, MessageToast) {
    "use strict";

    return Controller.extend("demo.eventDemoCase.controller.FirstView", {
        onInit: function() {
            this.router = sap.ui.core.UIComponent.getRouterFor(this);
            this.currentModel = new JSONModel({
                UserList: [{
                    ID: 0,
                    Name: 'Name 1'
                }, {
                    ID: 1,
                    Name: 'Name 2'
                }]
            });
            this.getView().setModel(this.currentModel);
        },
        onSelectionChange: function(oEvent) {
            MessageToast.show(oEvent.getParameter("listItem").getBindingContext().sPath);//显示当前点击该条对象的路径
            console.log(this.getView().getModel().getProperty(oEvent.getParameter("listItem").getBindingContext().sPath));//输出该点击对象路径所对应的值
        },
        selectedCheckBox: function(oEvent) {
            //oEvent包含所有参数信息
            MessageToast.show(oEvent.getParameter('selected'));
            //oEvent.getParameters();可以拿到该组件下所有parameter的集合
        },
        selectionChange: function(oEvent) {
            //oEvent.getParameter('selectedItem').getKey();拿到该选中条目的key值
            MessageToast.show(oEvent.getParameter('selectedItem').getBindingContext().sPath);
        }
    });
});

其中几个参数特在此进行说明。

selectionChangeitemPress :都是用于点击事件的处理,selectionChange一般用于PC端, itemPress一般在手机端触发
{= ${device>/system/phone} ? 'None' : 'SingleSelectMaster'}:一个三目运算,作用是判断当前设备是桌面还是手机,从而设定在不同设备上的选中状态。${}是取到相应路径下的值,=用来判断是true还是false
device: 在 Component.js 中 init 方法里定义,

this.setModel(models.createDeviceModel(), "device");

这里的models则是定义在model文件夹下的一个文件,便于模块化管理代码。
下面将分别贴出Component.js和models.js的代码。

Component.js

sap.ui.define([
    "sap/ui/core/UIComponent",
    "sap/ui/Device",
    "demo/eventDemoCase/model/models"
], function(UIComponent, Device, models) {
    "use strict";

    return UIComponent.extend("demo.eventDemoCase.Component", {
        metadata: {
            manifest: "json"
        },
        init: function() {
            jQuery.sap.require("sap.m.routing.RouteMatchedHandler");
            // call the base component's init function
            UIComponent.prototype.init.apply(this, arguments);
            var router = this.getRouter();
            this.routeHandler = new sap.m.routing.RouteMatchedHandler(router);
            router.initialize();
            // set the device model
            this.setModel(models.createDeviceModel(), "device");
        }
    });
});

models.js

sap.ui.define([
    "sap/ui/model/json/JSONModel",
    "sap/ui/Device"
], function(JSONModel, Device) {
    "use strict";
    return {
        createDeviceModel: function() {
            var oModel = new JSONModel(Device);
            oModel.setDefaultBindingMode("OneWay");
            return oModel;
        }
    };
});

希望系统学习Fiori的朋友可以移步到下方视频链接, 了解更多Fiori开发流程和编程技巧。
http://edu.csdn.net/course/detail/5046