2016-08-30 4 views
0

ビューにコンテキストが設定されていて、プロパティをLabelにバインドしたいが、そのプロパティをコンテキスト以外のモデルにバインドする必要がある。 私が試した:Mutimodel JSON-BIndingが機能しない

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

も試み:

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

と:

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

とJSONModel:

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

モデルがでグローバルに設定されます。

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

同じ.Viewで作成したモデルisn'tが、私はとの関連ビューでモデルに到達することができます:私はここに結合してwhat's間違っを知っているドント

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

。コンテキストバインディングは正しいものであり、動作しています。

+0

を防止する

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

以上が関数 'bindProperty'なしです: '新しいsap.m.Labelを返す({ テキスト: "{ラベル名}" 、 visible: "{detailModel>/contextExisting}" ) ' – herrlock

+0

あなたが見ることができるもう一つの方法は、あなたのビューで' this.getModel( "detailModel")。getData() 'を呼び出して結果を確認することです。 – herrlock

+0

ラベル名は問題ではありません。それはうまく動作します。プロパティバインディングは機能しません。 – RenPen

答えて

0

次のコードは動作している必要があります。

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

をあなたは、コンテキストを使用したい場合は、以下の(スラッシュなし)正しいsynthaxある

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

あなた」の文脈をすることを確認してくださいdetailModel "が設定される。デフォルトモデルのコンテキストはここでは使用されません。あなたが実行しようとする可能性のある例外

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