Привязка единого объекта SAPUI5 при использовании фильтров

#odata #sapui5

#odata #sapui5

Вопрос:

Я новичок в мире sapui5, и я застрял в начале, и прошу вашей помощи, я создал приведенную ниже службу OData, которая содержит две сущности введите описание изображения здесь

Затем я создал приложение, которое я запустил с первым представлением и контроллером, затем в нем я написал следующий код

 onLogin: function(){
		var sURI = "proxy/http/localhost:9999/MIKMOWCFDataService.svc/";
		var oModel = new sap.ui.model.odata.ODataModel(sURI, false);
		oModel.oHeaders = {
			"DataServiceVersion": "2.0",
			"MaxDataServiceVersion": "2.0"
		};
		var aFilter = [];		
		aFilter.push(new sap.ui.model.Filter("VendorEmail", sap.ui.model.FilterOperator.EQ, this.getView().byId("txtUserName").getValue()));
		aFilter.push(new sap.ui.model.Filter("VendorPassword", sap.ui.model.FilterOperator.EQ,this.getView().byId("txtPassword").getValue() ));
		oModel.read("/tbl_Vendors", {
			filters : aFilter
		});
		sap.ui.getCore().setModel(oModel,"vendors");		
	} 

Чего я пытаюсь добиться от кода, так это получить идентификатор пользователя после того, как он отправит свой адрес электронной почты и пароль, мне удалось вернуть правильную строку из базы данных, но после этого я не смог прочитать свойство ID из возвращенных данных, это делается только через список использованных и нажмите на списокэлемент для запуска другого события, а затем считывания идентификатора, который не является разумным в приведенном примере, может ли кто-нибудь помочь мне в том, как считывать свойство непосредственно из модели
Заранее спасибо

Ответ №1:

Вам нужно поместить идентификатор в глобальную переменную, а затем привязать переменную к ключу сущности.

     onInit: function() {
        var oEventBus = sap.ui.getCore().getEventBus();
        sap.ui.core.UIComponent.getRouterFor(this).attachRouteMatched(this.onRouteMatched, this);
    },

    //routing validation
    onRouteMatched: function(oEvent) {
        var oParameters = oEvent.getParameters();
        // when detail navigation occurs, update the binding context
        if (oParameters.name !== "CreateDoc") {

            return;
        }

        console.log(oParameters.name);
        //put your entity name here
        var sEntityPath = "/MasterSet(Id='"  yourGlobalVariable  "')";
        this.bindView(sEntityPath);

    },

    //binding initial data to sapui5 page
    bindView: function(sEntityPath) {
        var oView = this.getView();
        oView.bindElement(sEntityPath);

        // check if the data already on the client
        if (!oView.getModel().getData(sEntityPath)) {
            // check that the entity specified actually was found
            oView.getElementBinding().attachEventOnce("dataReceived", jQuery.proxy(function() {
                var oData = oView.getModel().getData(sEntityPath);
                console.log(oData);
                if (!oData) {
                    // this.showEmptyView();
                } else {
                    // 
                }
            }, this));
        }

    },
 

Попробуйте использовать консоль.регистрируйтесь на каждом шаге, чтобы понять поток.