2017-10-08 1 views
0

J'ai configuré manifest.json &Sapui5: Comment puis-je récupérer oData dynamiquement à l'aide manifest.json

"dataSources": { 
     ,"news": { 
      "uri": "/destinations/int_news/sap/opu/odata/sap/XKDNK/", 
      "type": "OData", 
      "settings": { 
       "odataVersion": "2.0" 
      } 
     } 
    }, 
    "models": { 
      "news": { 
      "dataSource": "news" 
      } 
    } 

Récupérer l'oData dans mon contrôleur:

var oModel = this.getModel("news"); 
    oModel.read("/planSet", { 
    success: function(data){ 
     debugger; 
    } 
}); 

Mais son aller chercher toutes les données plus de 1000 lignes, Je dois ajouter un filtre à la requête.

J'ai réussi à ajouter le filtre uniquement sur l'URL directe:

$filter=SystemId eq \"SKYPE\" 

Mais Comment puis-je ajouter dynamiquement en JavaScript le filtre sans aller chercher toutes les données? Par exemple:

var oModel = this.getModel("news"); 

oModel.read("/planSet?$filter" + <MY_CUSTOM_DATA_FILTER>, { 
    success: function(data){ 
     debugger; 
    } 
}); 

Répondre

1

Essayez de créer un objet de filtre où vous passez vos paramètres de filtre et d'utiliser cet objet filtre comme paramètre dans l'appel de lecture. comme ci-dessous

var oModel = this.getModel("news"), 
    sfilterVal = "SKYPE", 
    aFilters = []; 


     if (sfilterVal) { 
      aFilters.push(new sap.ui.model.Filter("SystemId", sap.ui.model.FilterOperator.EQ, sfilterVal)); 
     } 

     oModel.read("/planSet", { 
      filters: aFilters, 
      success: function(data){ 
       debugger; 
      } 
     });