为什么“目标”为阵列?

时间:2018-07-04 11:48:18

标签: sapui5

我具有以下路线定义:

"routes": [{
  "name": "overview",
  "pattern": "",
  "target": [
    "overview"
  ]
}, {
  "name": "customers",
  "pattern": "/customers",
  "target": [
    "customers"
  ]
}, {
  "name": "customer",
  "pattern": "/customer/{id}",
  "target": [
    "customer"
  ]
}],  

为什么目标属性需要一个数组?

2 个答案:

答案 0 :(得分:4)

target属性的值可以是一个数组,但不一定非要如API reference of sap.ui.core.Route中所述:

  

enter image description here

它完全可以等待一个数组的原因是,当导航到单个route或基于特定哈希值进行导航时,它支持一次显示多个视图(目标)实例值。

enter image description here 来源:Routing and Navigation

示例:该应用基于Flexible Column Layout(以前是带有sap.m.SplitApp的“分屏”布局),并且用户通过具有哈希值的深层链接(例如, #/Objects/ObjectID_14

enter image description here Source code

在这种情况下,如果仅将单个目标名称分配给target属性,则只能显示其中一个视图。但是,target属性可以包含多个目标名称,这些名称随后将根据controlAggregation进行解析和放置。

"routes": [
  {
    "name": "masterDetail",
    "pattern": "Objects/{objectId}",
    "target": [
      "master",
      "detail"
    ]
  }
],
"targets": {
  "master": {
    "viewName": "Master",
    "controlAggregation": "beginColumnPages"
  },
  "detail": {
    "viewName": "Detail",
    "controlAggregation": "midColumnPages"
  }
}

要了解有关路由的更多信息,请按照以下步骤操作:https://ui5.sap.com/#/topic/1b6dcd39a6a74f528b27ddb22f15af0d

答案 1 :(得分:1)

因为一条路线可能有多个目标。这相当于以前的subroutes

通过对一条路线使用多个目标,您可以同时更新应用程序的不同区域。基于相同的路由模式。

考虑一个SplitApp。如果您还希望基于路由更改“主视图”和“详细视图”,则可以将它们都定义为同一路由的目标。

在文档中查找更多信息:https://sapui5.hana.ondemand.com/#/topic/b01840ec42ef48e6bfd2bc12612f501f