2016-03-23 20 views
0

Bölme uygulamamda ayrıntı görünümü herhangi bir modele bağlanmaz.Model olmadan bölünmüş uygulamanın ayrıntılar sayfası

component.js I adlandırılmış modeli şöyle örneğini:

// creation and setup of the oData model 
var oConfig = { 
    metadataUrlParams: {}, 
    json: true, 
    defaultBindingMode : "TwoWay", 
    defaultCountMode : "Inline", 
    useBatch : false 
} 

// ### tab-employee ### 
var oModelEmpl = new sap.ui.model.odata.v2.ODataModel("/sap/opu/odata/sap/EMP_SRV"), oConfig); 

oModelEmpl.attachMetadataFailed(function() { 
    this.getEventBus().publish("Component", "MetadataFailedEMPL"); 
}, this); 

this.setModel(oModelEmpl, "EMPL"); 

der ana görüş kontrol yöntemi onSelect bir ListItem tıklayarak ateşlenir.

onSelect: function(oEvent) {       
    this.showDetail(oEvent.getParameter("listItem") || oEvent.getSource()); 
    } 

Bu, bağlayıcı güncellemek için bu iki yöntem var detay görünümü denetleyicisi yöntemini showDetail

showDetail: function(oItem) { 
    var bReplace = jQuery.device.is.phone ? false : true; 
    this.getRouter().navTo("detail", { 
     from: "master", 
     entity: oItem.getBindingContext('EMPL').getPath().substr(1), 
    }, bReplace); 
}, 

arayacaktır. onRouteMatched, TypeError: oView.getModel(...) is undefined hata iletisini aldığım bindView numaralarını çağırır.

onRouteMatched: function(oEvent) { 
    var oParameters = oEvent.getParameters(); 

    jQuery.when(this.oInitialLoadFinishedDeferred).then(jQuery.proxy(function() { 
     var oView = this.getView(); 

     if (oParameters.name !== "detail") { 
      return; 
     } 

     var sEntityPath = "/" + oParameters.arguments.entity; 
      this.bindView(sEntityPath); 
     }, this)); 
}, 



bindView: function(sEntityPath) { 
    var oView = this.getView();    
    oView.bindElement(sEntityPath); 


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

    } else { 
     this.fireDetailChanged(sEntityPath); 
    } 
}, 

Bu bölünmüş uygulamayı WebIDE tarafından oluşturulan şablona göre uygulamayı denedim. Neyin eksik olduğu hakkında bir fikrin var mı?

cevap

0

Kendiniz yazdıkça, "EMPL" adıyla bir "adlandırılmış Model" oluşturuyorsunuz. Eğer Modeli almak için aynı adı kullanmak zorunda Kontrolör olarak

:

// Assuming sEntityPath = "/items/0" 
this.getView().bindElement("EMPL>" + sEntityPath); 
+0

görünüyor: Eğer bindElement() çağrılırken Aynı şekilde

this.getView().getModel("EMPL"); 

model adı vermek zorunda "rutin-kör" gibi ... teşekkürler! – srz