SAPUI5表达式绑定

Nik*_*Kim 3 data-binding sapui5

是否可以将控制属性绑定到具有动态属性名称的模型,例如,存储在另一个模型字段中?我认为我们可以为此目的使用SAPUI5 Expression Binding,但它不起作用:跟踪窗口中的绑定被破坏,表达式似乎根本没有被评估.

XML视图

<TextArea value="{= ${StackOverflow>/bindTextAreaTo} }" />
Run Code Online (Sandbox Code Playgroud)

调节器

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" );
Run Code Online (Sandbox Code Playgroud)

Nab*_*abi 7

不,这是目前不可能的.

但是,对于您想要做的事情,有一个简单的解决方法(见下文).基本上,您创建一个视图模型并在模型上设置一些布尔值.然后在表达式绑定中使用此标志来"动态"定义要使用的模型的属性...

xmlView中

<TextArea value="{= ${view>/ask} ? ${StackOverflow>/question} : ${StackOverflow>/comment} }" />
Run Code Online (Sandbox Code Playgroud)

调节器

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);
Run Code Online (Sandbox Code Playgroud)