在我的应用程序中,我有一个带有员工选择的主视图(绑定到实体集EmployeesList)和一个Entry视图,我在其中向所选员工添加一些数据(绑定到AttAbsType)。
我想根据字段" schkz"在Entry视图中显示或隐藏一些字段。在EmployeesList实体集中。是否可以从DataSet访问不同于绑定到当前视图的值?
屏幕逻辑是:
整个模型的图像: Odata model
在控制台中,我可以测试即使我在条目视图中输入了值:
sap.ui.getCore().getModel("schkz");
但在详细信息视图中,我无法直接将此值用于表达式绑定。我试过这样:
查看:
<Input id="__input0" visible="{= ${schkz} === 'NORM' }"/>
即使我将值复制到隐藏标签并尝试使用该标签,它也不起作用:
控制器:
this.byId("_label21").setText(schkz);
查看:
visible="{= ${_label21} === 'NORM' }"
我可以在屏幕上看到该值,但表达式绑定无法使用它。这只是为了测试我真的可以从核心访问该值。
这是否只能使用表达式绑定?如果没有,最简单的方法是什么?将字段添加到AttAbsTypeSet,即使它在逻辑上不属于那里?或者在控制器中完成整个操作并隐藏/显示那里的字段?
感谢任何提示! :)
答案 0 :(得分:0)
在从主视图到详细信息视图的路由过程中,您可以传递参数。它们将作为navTo
函数中的参数对象传递。
this.getRouter().navTo("DetailsScreen", {selectedMasterId: <PlaceIdHere>});
然后,在详细信息屏幕控制器上,您可以读取此参数并相应地设置详细信息屏幕。
我会通过将DetailsMatched事件附加到Details Controller上的Init方法来实现这一点,如下所示:
onInit: function () {
this.getRouter().getRoute("Details").attachPatternMatched(this.onPatternMatched, this);
}
onPatternMatched: function (oEvent) {
var thePassedID = oEvent.getParameter("arguments").selectedMasterId;
// Do logic with the ID next.
}
为此,您需要在清单文件中定义参数。
"routing": {
...
"routes" : [
...
{
"pattern": "Details/{selectedMasterId}"
"name": "Details"
"target": "Details"
}]
...
}
此参数在URL中传递,并且可由用户在地址栏中读取,因此根据您的目的,这可能不太理想。
从这里开始,您可以根据您要显示的记录的ID来设置绑定,并且详细信息视图中的绑定可能与以这种方式设置的数据模型相关。