Как построить динамические URL-адреса для магистральной маршрутизации?

0

У меня сложная маршрутизация здесь. построение 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

Мне нужно создать URL-адреса для получения подробностей, цен и просмотров.

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

Нужно заменить динамически!

Как я могу их построить?

  • 0
    Вы пробовали читать документацию Backbone.Router ?
  • 0
    й. но мне нужно перейти к общим представлениям "Categories /: ID /: раздел" Я могу направить его, но проблема в href = "Categories /? / раздел".
Теги:
url-routing
backbone.js

2 ответа

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
    извините пожалуйста прочитайте вопрос, отредактировано
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
    Я не хочу повторно инициализировать общий вид.
  • 0
    Таким образом, у вас нет этих значений при первой инициализации представления? Если это так, вы можете просто добавить функцию к вашему представлению, которая погружается в DOM, захватывает элементы A, а затем модифицирует SRC (используя jQuery).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню