2016-08-30 13 views
0

In der Ansicht ist ein Kontext festgelegt, und ich möchte eine Eigenschaft an ein Label binden, diese Eigenschaft muss jedoch an ein anderes Modell als den Kontext gebunden sein. Ich habe versucht:Mutimodel JSON-BInding funktioniert nicht

createLabel: function(){ 
    return new sap.m.Label({ 
     text: {labelname} 
    }).bindProperty("visible","{/contextExisting}","detailModel"); 

auch versucht:

.bindProperty("visible","{detailModel>contextExisting}"); 

und:

.bindProperty("visible","{detailModel>/contextExisting}"); 

und die JSONModel:

this._detailJSONModel.setData({"contextExisting" : false}); 

das Modell mit global festgelegt ist:

sap.ui.getCore().setModel(this._detailJSONModel,"detailModel"); 

Das Modell isn't im gleichen .View erstellt, aber ich kann mit dem Modell in der jeweiligen Ansicht erreichen:

sap.ui.getCore().getModel("detailModel"); 

Ich weiß nicht, was noch falsch mit der Bindung hier. Die Kontextbindung ist korrekt und funktioniert.

+0

Sie können versuchen, ohne die Funktion zu laufen 'bindProperty': ' return new sap.m.Label ({ Text: "{labelname}" , sichtbar: "{detailModel>/contextExisting}" }) – herrlock

+0

Die zweite Sache, die Sie versuchen können, ist 'this.getModel (" detailModel "). GetData()' in Ihrer Ansicht und überprüfen Sie das Ergebnis. – herrlock

+0

Der Labelname ist nicht das Problem. Das funktioniert gut. Das Property-Binding funktioniert nicht. – RenPen

Antwort

0

muss der folgende Code funktioniert:

var label = new sap.m.Label({ 
     text: {labelName} 
    }).bindProperty("visible", 
{path : "detailModel>/contextExisting", 
formatter: function(x){ 
console.log(x); //should read 'false' 
return x; 
}}); 

console.log(label); //check here. What models do you see in the 'oModels' 
        //property, and the 'oPropagatedProperties/oModels' property? One of these must 
        //contain your model. 

return label; 
0

Wenn Sie einen Kontext verwenden möchten, wird im Anschluss an die richtige Synthax (ohne Schrägstrich)

.bindProperty("visible","{detailModel>contextExisting}"); 

überprüfen Sie bitte, dass der Rahmen Ihrer " detailModel "ist eingestellt. Der Kontext des Standardmodells wird hier nicht verwendet.

$.sap.log.info(label.getBindingContext("detailModel").getPath()); 

oder besser Ausnahmen zu verhindern

$.sap.log.info(label.getBindingContext("detailModel") && label.getBindingContext("detailModel").getPath()); 
Verwandte Themen