Backbone + JQuery: Как получить данные по ссылке с маршрутизатором магистрали?

Как я могу получить данные по ссылке с магистральным маршрутизатором? например,

HTML,

<a href='#!article/edit/about-us/' data-type="post">Edit</a>

магистральная,

routes: {
        '!article/edit/:url/':    'renderDynamicPage'
    },

    renderDynamicPage: function (url) {
        console.log(url);
        var $this = this;
        $($this).click(function(){
           console.log($this.data("type"));
        });
    },

результат,

about-us

но я хочу получить post из атрибута данных. Является ли это возможным?

1 ответ

Решение

Я не думаю, что вы можете сделать это. К тому времени, когда маршрутизатор узнает об изменении местоположения, любая ссылка на <a> давно прошло Все, что нужно маршрутизатору, должно быть в самом маршруте:

routes: {
    '!article/edit/:url/(:type)': 'renderDynamicPage'
}

и ссылка будет выглядеть так:

<a href='#!article/edit/about-us/post'>Edit</a>

Если вы не можете ничего сделать с <a>перед тем, как они попадут на страницу, вы можете что-то запутать так:

$('a[data-type]').each(function() {
    var $this = $(this);
    $this.attr('href', $this.attr('href') + $this.data('type'));
});

залатать hrefs. В качестве альтернативы, вы можете добавить click обработчики для всех <a>s вы заботитесь о и вручную объединить data-type во фрагмент URL перед обновлением window.location,

Другие вопросы по тегам