SAPUi5 - 路由不适用于第二个navTo

时间:2017-04-24 16:09:10

标签: sap sapui5

我对Web IDE中的路由有疑问。 我可以导航到第一个没有问题的视图,但如果我尝试导航到第二个视图,没有任何反应,也没有出现错误消息。

我已经重新创建了网络中的许多示例,但效果很好。但是所有已创建的示例都基于到一个视图的单个路由。

我做了以下事情:

  1. 创建了4个视图(app,view1,view2,view3)
    • app是根视图
    • view1是默认视图
    • 在view1中创建了一个按钮&功能,以导航到view2
    • 在view2中创建了一个按钮&功能,以导航到view3
  2. 增强的manifest.json(参见下面的代码)
  3. component.js中的初始化路由器
  4. 给视图应用提供了ID“app”
  5. 路由到view2工作,路由到view3不起作用。 我已将我的项目上传到github。希望你能帮忙。

    https://github.com/macsarena/routing04

1 个答案:

答案 0 :(得分:2)

由于路由的工作方式(以及XML_view View2按钮中的拼写错误)导致的一些变化。

那么,路由如何运作:

  1. 您更改了网址的哈希值。
  2. 路由器看到网址发生变化,并会加载与网址的模式匹配的第一个目标。
  3. 现在,正如您所知,当我们在模式中指定Curly_Braces,即{}时,它表示一个值。为了更好地理解,请考虑以下路线:

               {
                    "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目标。

    所以,您需要创建唯一哈希网址以加载不同的观看次数

    让我将您的路线更改为:

    {
                    "name": "View2",
                    "pattern": "View2/{V2}",
                    "target": ["View2"]
                }, {
                    "name": "View3",
                    "pattern": "View3/{V3}",
                    "target": ["View3"]
                }
    

    按下view2中的按钮将加载view3。

    另外,view2中的拼写错误:onPressButton->更改为:onButtonPress(因为这是view2控制器中函数的名称)。

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