在视图上设置了一个上下文,我想将一个属性绑定到Label,但该属性需要绑定到另一个模型而不是上下文。 我试过了:
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中创建的,但我可以通过以下方式在相关视图中找到模型:
sap.ui.getCore().getModel("detailModel");
我不知道这里绑定有什么问题。 Context-Binding是正确且有效的。
答案 0 :(得分: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;
答案 1 :(得分:0)
如果你想使用一个上下文,下面是正确的synthax(没有斜杠)
.bindProperty("visible","{detailModel>contextExisting}");
请检查是否设置了“detailModel”的上下文。默认模型的上下文不在这里使用。
$.sap.log.info(label.getBindingContext("detailModel").getPath());
或更好地防止例外
$.sap.log.info(label.getBindingContext("detailModel") && label.getBindingContext("detailModel").getPath());