Я разрабатываю мобильное приложение с использованием RequireJS и Backbone.js. Я хотел бы указать переход с одной страницы на другую, добавив атрибуты data-transition
и data-direction
к каждому якорю (точно так же, как с jQuery Mobile):
<a href="#home" data-transition="slide" data-direction="left">Go to the home page</a>
Все мои представления расширяют базовый вид, который прикрепляет обработчик кликов к привязкам и ловит значения этих атрибутов:
define([
'zepto',
'lodash',
'backbone'
], function ($, _, Backbone) {
'use strict';
BaseView = Backbone.View.extend({
events: {
'click a': 'navigate'
},
navigate: function (e) {
e.preventDefault();
var href = $(e.currentTarget).attr('href'),
transition = $(e.currentTarget).attr('data-transition'),
direction = $(e.currentTarget).attr('data-direction');
Backbone.history.navigate(href, true);
}
});
});
Моя проблема в том, что я не знаю, как передать эти значения обработчикам маршрутов моего маршрутизатора, которые определены как еще один модуль:
define([
'zepto',
'lodash',
'backbone'
], function ($, _, Backbone) {
'use strict';
var Router = Backbone.Thumb.Router.extend({
routes: {
'': 'home'
}
});
var initialize = function () {
var router = new Router();
router.on('route:home', function () {
require(['views/home'], function (HomeView) {
var homeView = new HomeView();
// Get the data-transition and data-direction attributes
// of the clicked anchor here:
// var transition = ???,
// direction = ???;
router.animate(homeView.render().$el, transition, direction);
});
});
Backbone.history.start();
};
return {
initialize: initialize
};
});
Кто-нибудь знает хорошее решение этой проблемы?
Спасибо вам заблаговременно!:-) С уважением,
Дэвид