2013-12-10 35 views
0

我在这里有复杂的路由。构建子视图的URL以导航不同的父视图。如何构建骨干路由的动态url?

domain.com/categories/1/details 
domain.com/categories/1/price 
domain.com/categories/1/owner 

domain.com/categories/2/details 
domain.com/categories/2/price 
domain.com/categories/2/owner 

我需要构建详细信息,价格和所有者视图的网址。

<a href="#/categories/id/price">Price</a> 
<a href="#/categories/id/details">details</a> 
<a href="#/categories/id/owner">owner</a> 

需要动态替换ID!

我该如何构建它们?

+0

您是否尝试过阅读[Backbone.Router(http://backbonejs.org/#Router)文档? – fbynite

+0

呀。但我需要浏览共同的意见“categories /:id /:section”我可以路由它,但问题是“categories /?/ section”。 – user1834809

回答

1

你可以试试这个:

var myRouter = Backbone.Router.extend({ 
      routes : {} 
    }); 
    myRouter.on('route:categories/:id/details' function() { 

    }); 

    myRouter.on('route:categories/:id/price' function() { 

    }); 

    myRouter.on('route:categories/:id/owner' function() { 

    }); 
+0

对不起,请阅读该问题,编辑 – user1834809

0

在您的视图的模板,你必须:

<script type="text/template" id="my-template"> 
    <a href="#/categories/<%= id %>/price">Price</a> 
    <a href="#/categories/<%= id %>/details">details</a> 
    <a href="#/categories/<%= id %>/owner">owner</a> 
</script> 

然后你的视图的渲染方法中,你只需要在ID变量传递。

<script type="text/javascript"> 
    var userId = 42; 

    var MyView = Backbone.View.extend({ 
     initialize: function(){ 
      this.render(); 
     }, 
     render: function(){ 
      // Compile the template using underscore 
      var template = _.template($("#my-template").html(), {id: userId}); 

      // Load the compiled HTML into the Backbone "el" 
      this.$el.html(template); 
     } 
    }); 
</script> 

这里是多一点关于这个问题,可能会帮助:http://backbonetutorials.com/what-is-a-view/

+0

我不想重新初始化总视图。 – user1834809

+0

所以当视图第一次初始化时你没有这些值?如果是这样的话,你可以添加一个函数到你的视图中,这个函数可以插入到DOM中,抓取A元素,然后修改SRC(使用jQuery)。 – Bart