2016-02-20 2 views
1

Можно ли связать свойство управления с моделью с динамическим именем свойства, хранящимся, например, в другом поле модели? Я думал, что для этой цели мы можем использовать SAPUI5 Expression Binding, но это не работает: привязка в окне трассировки прерывается, и выражение, похоже, вообще не оценивается.SAPUI5 Expression Binding

XML Просмотр

<TextArea value="{= ${StackOverflow>/bindTextAreaTo} }" /> 

Контроллер

oModel = this.getView().getModel("StackOverflow"); 

/* 
* The model have two properties: question and comment 
* I want value of TextArea to be bound to one of them based on some condition 
*/ 

oModel.setProperty("/question", ""); 
oModel.setProperty("/comment", ""); 

oModel.setProperty("/bindTextAreaTo", 
    bAsk ? "StackOverflow>/question" : "StackOverflow>/comment"); 

ответ

5

Нет, в настоящее время не представляется возможным.

Однако есть простейшее решение для того, что вы хотите сделать (см. Ниже). В принципе, вы создаете модель представления и задаете некоторое логическое значение для модели. Этот флаг затем используется в вашем выражении привязки для определения «динамически» какое свойство, что модель должна быть использована ...

XMLView

<TextArea value="{= ${view>/ask} ? ${StackOverflow>/question} : ${StackOverflow>/comment} }" /> 

Контроллер

var oModel = this.getView().getModel("StackOverflow"); 
oModel.setProperty("/question", ""); 
oModel.setProperty("/comment", ""); 
//... 

var oViewModel = new sap.ui.model.json.JSONModel(); 
this.getView().setModel(oViewModel, "view); 
//... 

oViewModel.setProperty("/ask", bAsk); 
+0

Спасибо за ваш ответ. Я также нашел другой ответ SO с аналогичным подходом http://stackoverflow.com/questions/34653740/how-to-use-an-if-else-condition-in-a-sapui-xml-view –