2015-02-16 17 views
5

C'è un modo per sapere quando viene caricato il modello?Caricamento del modello SAPUI5

Esempio:

sap.ui.controller("myapp.MyViewController", { 

    onInit: function() { 
     this.router = sap.ui.core.UIComponent.getRouterFor(this); 
     this.router.attachRoutePatternMatched(this._handleRouteMatched, this); 
     this.model = sap.ui.getCore().byId("app").getModel("mymodel"); 
    }, 

    onAfterRendering: function() { 
     console.log(this.model); 
    } 
... 

In questo caso l'istanza modello è definito, ma contiene oggetto vuoto, perché nessun dato viene caricato.

Se mi avvolgo il metodo console.log con:

setTimeout(function() { 
    console.log(sap.ui.getCore().byId("app").getModel("mymodel")); 
}, 0); 

poi i dati del modello viene caricato correttamente, ma vorrei qualcosa di più affidabile rispetto all'utilizzo setTimeout.

risposta

5

La classe sap.ui.model.Model ha un evento chiamato requestCompleted (link). Così si può associare una funzione a quell'evento con il metodo attachRequestCompleted (link):

this.model.attachRequestCompleted(function(oEvent){ 
    var model = oEvent.getSource(); 
    console.log(model); 
}); 
+0

Grazie! Ho già visto quel metodo, ma il tuo esempio ha chiarito tutto. – niceman

+0

Ho un problema simile all'OP. Come dovrei usare 'attachRequestCompleted' nel contesto di' _handleRouteMatched'? – SDD64

+0

@ SDD64 So che la tua domanda è vecchia ora ma ... stavi tentando di caricare un modello sul routing su una nuova vista? –