【问题标题】:How to handle multipleparams in dynamic way如何以动态方式处理多个参数
【发布时间】:2021-08-10 05:05:04
【问题描述】:

如何以动态方式处理多参数。

我有这样的多个参数的路由。

routes: {
        'home/:id': 'onHomeId',
        'home/:id/:param1': 'onHomeId',
        'home/:id/:param1/:param1Value': 'onHomeId',
        'home/:id/:param1/:param1Value/:param2/:param2Value': 'onHomeId',
        'home/:id/:param1/:param1Value/:param2/:param2Value/:param3/:param3Value': 'onHomeId',
        'home/:id/:param1/:param1Value/:param2/:param2Value/:param3/:param3Value/:param4/:param4Value': 'onHomeId',
        
    }

我不想写这么多,而是想要一些动态的方式来生成,因为参数可以增长。

这就是我正在尝试的。

onHomeId : function(){
    let _this = this,
        hashValue = location.hash,
        params =  location.hash.split("/");
        
    /* code where i am using params */
}

我正在获取整个 url 并停止它,然后处理它

谁能解释我能做的最好的事情。

【问题讨论】:

    标签: javascript extjs routes extjs6 extjs6.5


    【解决方案1】:

    ExtJS 路由器并不是真正用于传递可变数量的参数,例如 URL 查询字符串。 ExtJS 路由器可用于跟踪应用程序的状态并将其存储在浏览器历史记录中,因此您的用户可以前后导航,并链接到应用程序的特定部分,就像它不是单页应用程序一样。

    您为路由指定的方法将按顺序从路由中获取所有参数。所以路由home:/param1需要function(param1)、路由home:/param1/:param2function(param1, param2)等。这些不是键值对,比如?param1=1&param2=2。你可以像yourdomain.com#home/1/2一样使用它们,处理这个路由的函数会接收12作为参数,按照这个顺序,你不能在路由中指定参数名称。

    可以使用控制器的setRoute 方法动态设置路由,而不是在类声明中,并在您的应用程序初始化时执行它。但这并不能真正帮助您,因为您仍然需要具有 1、2、3 等参数的函数。

    据我所知,您有两种选择:

    1. 您的路线只使用一个参数,例如home/:myallparams,在function(myallparams) 中您可以尝试将其分开。但是你很容易遇到特殊字符的麻烦,我真的不推荐这种方法。
    2. 您可以在 ExtJS 应用程序中使用传统的 URL 查询字符串,并将路由器仅用于基本路由。假设您的 URL 中的 ?param1=1&param2=2 的通常格式,您可以使用以下代码来提取 ExtJS 代码中的参数:
    var queryString = window.location.href.split('?')[1];
    if (queryString) {
        var queryObject = Ext.Object.fromQueryString(queryString);
    
        // check for specific parameters
        if (queryObject.param1) {
            // do something with queryObject.param1
        }
        if (queryObject.param2) {
            // do something with queryObject.param2
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-04
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2021-02-03
      • 1970-01-01
      相关资源
      最近更新 更多