Sapui5 XML表达式绑定是否只能使用绑定的数据集?
在我的应用程序中,我有一个带有员工选择的主视图(绑定到entity set EmployeesList)和一个条目视图,我在其中向所选员工添加一些数据(绑定到AttabType) 我想根据EmployeesList实体集中的字段“schkz”,在条目视图中显示或隐藏一些字段。是否可以从与绑定到当前视图的数据集不同的数据集中访问值 屏幕逻辑为:Sapui5 XML表达式绑定是否只能使用绑定的数据集?,sapui5,Sapui5,在我的应用程序中,我有一个带有员工选择的主视图(绑定到entity set EmployeesList)和一个条目视图,我在其中向所选员工添加一些数据(绑定到AttabType) 我想根据EmployeesList实体集中的字段“schkz”,在条目视图中显示或隐藏一些字段。是否可以从与绑定到当前视图的数据集不同的数据集中访问值 屏幕逻辑为: 员工选择视图(读取基本数据,包括schkz值) “详细信息”视图以显示现有条目 条目视图以添加新条目。在这里,我想使用所选员工的schkz值来显示/隐藏字
sap.ui.getCore().getModel("schkz");
但是在Details视图中,我不能直接将这个值用于表达式绑定。我试着这样做:
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.
}
视图:
视图:
我可以在屏幕上看到该值,但表达式绑定无法使用它。这只是为了测试,我真的可以访问核心的价值
仅使用表达式绑定就可以做到这一点吗?如果没有,最简单的方法是什么?将该字段添加到AttAbsTypeSet,即使它在逻辑上不属于该字段?或者在控制器中执行整个操作,并在那里隐藏/显示字段
谢谢你的提示!:) 在从主视图到详细视图的路由过程中,您可以传递参数。它们将作为
navTo
函数中的参数对象传递
this.getRouter().navTo("DetailsScreen", {selectedMasterId: <PlaceIdHere>});
要使其工作,还需要在清单文件中定义参数
"routing": {
...
"routes" : [
...
{
"pattern": "Details/{selectedMasterId}"
"name": "Details"
"target": "Details"
}]
...
}
此参数在URL中传递,用户可以在地址栏中读取,因此根据您的目的,这可能并不理想
从这里开始,您可以根据您试图显示的记录的id设置绑定,而Details视图中的绑定可能与以这种方式设置的数据模型相对。绑定没有任何意义,也无法工作。请发布模型数据的结构。通常,在详细信息视图中绑定主数据是没有用的,因为您无法确保主数据已加载,例如,如果您的详细信息视图是通过直接导航加载的,主数据可能不会加载到小型设备上,因为主数据没有加载。我猜它们充其量也有点模糊:)我只是试图表明我从后端获得了数据,现在我想在Details视图中使用它,但是当涉及到表达式绑定时,视图看不到它。在这个应用程序中,如果不先选择员工,就不可能进入详细信息屏幕,因此我们手头总是有schkz值。那么,为了在视图中使用它,我应该将其粘贴到哪里?是将其添加到绑定到详细信息视图的实体集的唯一选项吗?如前所述:发布一个数据示例。什么是schkz?它是模型名称还是属性。你的例子不清楚吗?完成了,请看原始帖子。谢谢你的想法!如果像这样传递,您认为变量“thePassedID”可以在视图中的表达式绑定中使用吗?您可以使用从控制器通过简单javascript以这种方式传递的数据在视图中设置字段。
this.getView().byId(“idvalue”).setText(thePassedID)
。我不认为这是你想要的。我认为您需要根据详细信息页面的主id为视图设置一个模型。然后在视图中定义相对绑定。如果使用this.getView().setModel(modelobject,“myModel”)
在控制器中为名为myModel
的视图设置模型,则可以在视图定义中使用{myModel>myField}
引用模型的字段。如果操作正确,我不想在任何地方显示该值。我只是想用它来评估是否应该显示或隐藏几个字段。对不起,我说得太含糊了。所以,我可以创建这个“助手”模型来包含这个字段并使用它?
this.getRouter().navTo("DetailsScreen", {selectedMasterId: <PlaceIdHere>});
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"
}]
...
}