Mutimodel JSON-BInding不起作用

时间:2016-08-30 12:54:24

标签: javascript data-binding sapui5 jsonmodel

在视图上设置了一个上下文,我想将一个属性绑定到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是正确且有效的。

2 个答案:

答案 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());