Sapui5 XML表达式绑定是否只能使用绑定的数据集?

Sapui5 XML表达式绑定是否只能使用绑定的数据集?,sapui5,Sapui5,在我的应用程序中,我有一个带有员工选择的主视图(绑定到entity set EmployeesList)和一个条目视图,我在其中向所选员工添加一些数据(绑定到AttabType) 我想根据EmployeesList实体集中的字段“schkz”,在条目视图中显示或隐藏一些字段。是否可以从与绑定到当前视图的数据集不同的数据集中访问值 屏幕逻辑为: 员工选择视图(读取基本数据,包括schkz值) “详细信息”视图以显示现有条目 条目视图以添加新条目。在这里,我想使用所选员工的schkz值来显示/隐藏字

在我的应用程序中,我有一个带有员工选择的主视图(绑定到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"
            }]
        ...
        }