카테고리 없음

sap ui DataBinding -기초

이운형 2022. 8. 24. 17:01
반응형

-view.xml-

<mvc:View controllerName="s09.zse0709.controller.View1"
    xmlns:mvc="sap.ui.core.mvc" displayBlock="true"
    xmlns="sap.m"
>
<Page id="page" title="{i18n>title}">
    <content>
        <Table items="{/aEmp}">
            <!-- Header -->
            <columns>
                <Column><header><Text text="Employee Number" /></header></Column>
                <Column><header><Text text="Employee Name" /></header></Column>
            </columns>

            <!-- Item -->
            <items>
                <ColumnListItem press="onColumn" type="Active">
                    <cells>
                        <Text text = "{eNo}" />
                        <Text text = "{eName}" />
                    </cells>
                </ColumnListItem>
            </items>
        </Table>

        <Table id="idSkillTable" items="{/aSkill}">

            <!-- Header -->
            <columns>
                <Column><header><Text text="Skill ID" /></header></Column>
                <Column><header><Text text="Skill Name"   /></header></Column>
                <Column><header><Text text="Skill No"    /></header></Column>
            </columns>

            <!-- Item -->
            <items>
                <ColumnListItem>
                    <cells>
                        <Text text = "{sId}" />
                        <Text text = "{sName}" />
                        <Text text = "{eNo}" />
                    </cells>
                </ColumnListItem>
            </items>

        </Table>

    </content>
</Page>
</mvc:View>
 
 

-view.js-

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/model/json/JSONModel",
    "sap/ui/model/Filter"
],
    /**
     * @param {typeof sap.ui.core.mvc.Controller} Controller
     */
    function (Controller,  JSONModelFilter) {
        "use strict";

 

        return Controller.extend("s09.zse0709.controller.View1", {
            onInit: function () {
                let oData = {
                    aEmp: [
                        { eNo :"E001"eName:"Lee" },
                        { eNo :"E002"eName:"Han" }
                    ],
                    aSkill: [
                        { sId: "S001"sName: "ABAP",   eNo:"E001" },
                        { sId: "S001"sName: "ABAP" ,  eNo:"E002" },
                        { sId: "S003"sName: "WD4A",   eNo:"E002" },
                        { sId: "S003"sName: "SAPUI5"eNo:"E002" }
                    ]
                };
                /**
                 * model.addAttribute()
                 */
                let oModel = new JSONModel();
                oModel.setDataoData );
                this.getView().setModel(oModel);

 

            },

//이때 oEvt에는 해당 xml 에서의 press 당시의 기능을 포함하고 있음.

 

            onColumn: function(oEvt){
                let selItem = oEvt.getSource().getBindingContext(); // /aEmp/0
                console.log("oEvt.getSource() ==" + oEvt.getSource());
                console.log("oEvt.getSource().getBindingContext() = " + selItem );

 

                let oModel = this.getView().getModel();
                console.log("oModel : " + oModel);
                let selEno = oModel.getProperty("eNo"selItem);  // E001    .getProperty("찾으려는 list 속성값", "주소값")
                console.log("selEno : " + selEno);
                let oSkillTable = this.getView().byId("idSkillTable");
                console.log("oSkillTable : " + oSkillTable); //Element sap.m.Table#application-s09zse0709-display-component---View1--idSkillTable

 

                /**
                * Filter (" ", " ", " ")
                * new sap.ui.model.Filter(vFilterInfo, vOperator?, vValue1?, vValue2?)
                *     
                let oFilter = new Filter("eNo""EQ"selEno ); // 포인터가 있는 ENo 속성 과 같은 값을 가짐.
                console.log("oFilter : " + oFilter);
                oSkillTable.getBinding("items").filter(oFilter); //"idSkillTable의 items를 가져온다. filter() 
            }
        });
    });
반응형