如何在骨干网中获取url查询参数

时间:2014-07-03 07:40:12

标签: backbone.js

我正在使用路由器和所有的骨干应用程序,我在从网址获取查询参数时面临一个问题,我没有找到任何直接的方法来解决它。

我有一个像test.com/main/page1?state=code&value=blaa

的网址

我想用骨干路由器的方式从url中获取state和value的值。请帮我找一个解决方案。

2 个答案:

答案 0 :(得分:4)

他们为您创建了Execute,可以在调用路由之前执行诸如解析查询字符串等功能。 更多信息:http://backbonejs.org/#Router-execute

答案 1 :(得分:1)

@Prats:是的,您可以通过以下方式获取中间页面(不是主页)url参数值。

<强> router.js

 backboneApp.Routers.MyrouterRouter = Backbone.Router.extend({

    routes:{
        "" : "routeToList",
        "register" : "routeToRegister",
        //Here the actual url along with the fragment(parameters)
        "edit/:id" : "routeToEdit"
    },
    .
    .
    .
    //Other functions.
    .
    .
    .
    //sending the url fragment to render() function....
    routeToEdit: function(id)
    {           
        this.editView = new backboneApp.Views.EditView();
        //Note, this render function from the corresponding view, 
        //can receive the extra fragment(parameter)
        this.editView.render(id);
        this.$content.html(this.editView.el);
    }
    });

<强> edit.js

    backboneApp.Views.EditView = Backbone.View.extend({
    .
    .
    .
    //  some other functions.... 
    .
    .
    .
    render: function(id)
    {
      // The id which I passed received here, from here you can 
      // manipulate as you wanted.

    });

   }

});

注意:我已将url用作edit /:id,用于路由。根据您的要求,您可以通过使用constant-url /:variable-fragment在routes方法中使用您的url,以便将此变量片段传递给相应视图的render()函数。在那里,您可以根据需要操作参数。如果您遵循上述相同的概念但是需要更多的努力,也可以使用多个参数。希望这会对你有所帮助。