2016-08-30 3 views
0

есть контекст, установленный в представлении, и я хочу привязать свойство к метке, но это свойство должно быть привязано к другой модели, чем контекст. Я пробовал: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, но я могу достичь модели в соответствующем представлении с:

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

Я не знаю, как там не так со связыванием здесь. Контекстно-привязка правильная и работающая.

+0

Вы можете попробовать запустить без функции '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").getPath()); 

или лучше предотвратить исключения

$.sap.log.info(label.getBindingContext("detailModel") && label.getBindingContext("detailModel").getPath()); 
Смежные вопросы