SAPUI5-路由不´;我不为第二海军工作

SAPUI5-路由不´;我不为第二海军工作,sapui5,Sapui5,关于Web IDE中的路由,我有一个问题。 我可以毫无问题地导航到第一个视图,但如果我尝试导航到第二个视图,则不会发生任何事情,也不会显示错误消息 我已经重新创建了许多在web上找到的示例,它们运行良好。但所有已建立的示例都基于一个视图的单一路由 我做了以下工作: 创建了4个视图(应用程序、视图1、视图2、视图3) 应用程序是根视图 view1是默认视图 在view1中创建了一个按钮和函数,用于导航到view2 在view2中创建了一个按钮和函数以导航到view3 增强的manifest.j

关于Web IDE中的路由,我有一个问题。 我可以毫无问题地导航到第一个视图,但如果我尝试导航到第二个视图,则不会发生任何事情,也不会显示错误消息

我已经重新创建了许多在web上找到的示例,它们运行良好。但所有已建立的示例都基于一个视图的单一路由

我做了以下工作:

  • 创建了4个视图(应用程序、视图1、视图2、视图3)
    • 应用程序是根视图
    • view1是默认视图
    • 在view1中创建了一个按钮和函数,用于导航到view2
    • 在view2中创建了一个按钮和函数以导航到view3
  • 增强的manifest.json(参见下面的代码)
  • 已在component.js中初始化路由器
  • 为视图应用程序提供了id“app”
  • 到view2的布线有效,到view3的布线无效。 我已将我的项目上载到github。希望你能帮忙


    由于路由的工作方式(以及XML_view View2按钮中的输入错误),有两个更改

    那么,路由是如何工作的:

  • 您可以更改url的哈希值
  • 路由器看到URL发生变化,将加载与URL的模式匹配的第一个目标
  • 现在,正如您所知,当我们在模式中指定大括号,即{}时,它表示一个值。为了更好地理解,考虑路径:

               {
                    "name": "Emp",
                    "pattern": "Emp/{EmpID}",
                    "target": ["View2"]
                },
    
    现在,如果我将URL更改为hash:#/Emp/1,它将加载view2

    另外,散列URL::#/Emp/100,它将加载??视图2。正确的!因为它与模式匹配,即Emp后跟一个值(EmpID)

    现在,考虑一下你的路线:

    {
                "name": "View2",
                "pattern": "{V2}",
                "target": ["View2"]
            }, {
                "name": "View3",
                "pattern": "{V3}",
                "target": ["View3"]
            }
    
    这两条路线的模式与这两条路线相同,只是有一个值,并且没有区别因素。请记住,路由器将始终加载第一个匹配的模式目标

    因此,当URL为:#/5时,它将加载view2(首先与模式匹配)。如果将名称:view3置于名称:view2之上,它将首先加载view3目标

    所以,重点是您需要创建唯一的散列URL来加载不同的视图

    让我将您的路线更改为:

    {
                    "name": "View2",
                    "pattern": "View2/{V2}",
                    "target": ["View2"]
                }, {
                    "name": "View3",
                    "pattern": "View3/{V3}",
                    "target": ["View3"]
                }
    
    按下view2中的按钮,它将加载view3

    此外,view2中的输入错误:On PressButton->更改为:On Button Press(这是view2控制器中函数的名称)

    如果有帮助,请告诉我。:)