2016-08-01 1 views
0
<core:mvc.XMLView id="{path:' AssignmentModel>/AssignmentType' ,formatter:'.getViewName'}" 
      viewName="{path:' AssignmentModel>/AssignmentType' ,formatter:'.getViewName'}" 
      height="100%" visible="true"/> 

Ich möchte, dass die Ansicht basierend auf dem zugewiesenen Typ geladen wird. Ich habe versucht, die Ansicht vom Controller basierend auf dem Typ dynamisch zu laden. aber das funktioniert nicht wie erwartet.kann ich die ID und den Namen der Ansicht dynamisch festlegen?

+0

Warum nicht den Mechanismus Routing verwenden und zu der Ansicht navigieren auf dem Zuweisungstyp basiert? – Qualiture

Antwort

0

Wenn Sie eine Ansicht in einer XMLView verwenden, wird diese einmal erstellt. Selbst wenn Ihre Bindung funktioniert, wäre es OneTime, was bedeutet, dass es nur einmal aufgelöst wird, was offensichtlich nicht das ist, wonach Sie suchen.

Sie müssen entweder Routing als bereits erwähnte Qualité verwenden oder Ihren Inhalt dynamisch von Ihrem Controller laden und manuell in Ihre Ansichtshierarchie einfügen. Sie könnten noch eine PropertyBinding verwenden, um Eigenschaftsänderungen wie folgt zu beachten:

var binding = new sap.ui.model.PropertyBinding("AssignmentModel", "/AssignmentType"); 
binding.attachChange(function() { 
    var sViewName = this.getViewName(this.getModel("AssignmentModel").getProperty("/AssignmentType"); 
    var oView = sap.ui.xmlview({ 
    id: sViewName 
    viewName: sViewName 
    }); 
    // pack your view whereever you want, clean the old view before 
    this.getView().addContent(oView); 
}, this) 

Sie müssen möglicherweise sap.ui.model.odata.ODataPropertyBinding je nach Modell verwenden, das Sie verwenden.

Code oben ist nicht getestet, aber es sollte "funktionieren".

GL Chris

Verwandte Themen