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'));
});
залатать href
s. В качестве альтернативы, вы можете добавить click
обработчики для всех <a>
s вы заботитесь о и вручную объединить data-type
во фрагмент URL перед обновлением window.location
,