读取可选的url参数

时间:2018-01-18 11:22:58

标签: javascript url routing sapui5

我想在我的sapui5应用程序中捕获一个可选的url参数。

清单:

            "routes": [
            {
                "pattern": "page_1:query:",
                "name": "page_1",
                "target": [
                    "page_1"
                ]
            }]

控制器:

    handleRouteMatched: function(oEvent) {
        var oArgs, oView, oQuery;
        oArgs = oEvent.getParameter("arguments"); // undefined
        console.log(oEvent.mParameters);

测试用例

根据测试用例 PatternMatching

  • URLPattern:query:

  • 清单模式:查询:

  • 匹配:{“query”:“test = 123123,bla = 123213”}

网址:

/webapp/index.html?test=123

没有价值:oEvent.mParameters.data.hash:“”

/webapp/index.html?#/查询= 123

有值:oEvent.mParameters.data.hash:query =“123”

  • 为什么我要添加#/?
  • 我怎样才能避免添加#/?

1 个答案:

答案 0 :(得分:1)

我认为你在理解UI5路由概念时失败了。您不应该将其理解为GET请求。您可以在散列路由中传递的参数不是GET参数。

首先,您应该了解网址的各个部分,在这种情况下,我们可以这样说:

<host>:<port>?myGetParam1=value1&myGetParam2=value2#/My/Navigation/Pattern/ParamValue1/ParamValue2`

?#,您拥有GET请求的参数。他们去服务器端 从#到最后,您有哈希路径。用于客户端。

如果您在清单中将模式定义为

 /My/Navigation/Pattern/{ParamValue1}/:ParamValue2:

然后以下示例将起作用

#/ My / Navigation / Pattern / 3 - &gt;它将3作为必需的 paramValue1 传递,而对于可选的 paramValue2

则没有任何内容

#/ My / Navigation / Pattern / 3/2 - &gt;它将3作为强制性 paramValue1 传递,将2作为可选 paramValue2

但是如果你试试

<强>#/我/导航/模板/

它会失败,因为您已将 paramValue1 设置为必需

要获取这些参数,请在控制器中为“RouteMatched”事件定义一个事件处理程序。参数将位于事件对象的“参数”中。清楚地解释了here

我建议你通过this tutorial。这是UI5 demokit中最好的教程之一。