我正在使用 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
};
});
有谁知道解决这个问题的好方法?
非常感谢您!:-) 此致,
大卫