Add router to frontend
parent
2d1e678aa6
commit
dc988e0faa
@ -0,0 +1,18 @@
|
|||||||
|
define([
|
||||||
|
'underscore',
|
||||||
|
'backbone',
|
||||||
|
'marionette'
|
||||||
|
], function (_, Backbone, Marionette) {
|
||||||
|
var Obj = Marionette.Object;
|
||||||
|
var Model = Backbone.Model;
|
||||||
|
|
||||||
|
function BaseModel() {
|
||||||
|
Model.apply(this, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
BaseModel.prototype = new Model();
|
||||||
|
|
||||||
|
_.extend(BaseModel.prototype, Obj.prototype);
|
||||||
|
|
||||||
|
return BaseModel;
|
||||||
|
});
|
@ -0,0 +1,29 @@
|
|||||||
|
define(['underscore', 'backbone', 'core/model'], function (_, Backbone, Model) {
|
||||||
|
var Router = Backbone.Router;
|
||||||
|
|
||||||
|
function DeckRouter() {
|
||||||
|
Router.apply(this, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
DeckRouter.prototype = new Router();
|
||||||
|
|
||||||
|
_.extend(DeckRouter.prototype, {
|
||||||
|
Model: Model,
|
||||||
|
model: null,
|
||||||
|
|
||||||
|
routes: {
|
||||||
|
'slide/:id': 'slide'
|
||||||
|
},
|
||||||
|
|
||||||
|
initialize: function initialize(config) {
|
||||||
|
config = config || {};
|
||||||
|
this.model = config.model || new this.Model();
|
||||||
|
},
|
||||||
|
|
||||||
|
slide: function slide(id) {
|
||||||
|
this.model.set('slide', parseInt(id, 10));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return DeckRouter;
|
||||||
|
});
|
@ -1,10 +1,23 @@
|
|||||||
define('main', ['underscore', 'config', 'app'], function main(_, config, App) {
|
define('main', [
|
||||||
|
'underscore',
|
||||||
|
'backbone',
|
||||||
|
'config',
|
||||||
|
'app'
|
||||||
|
], function main(_, Backbone, config, App) {
|
||||||
'use strict';
|
'use strict';
|
||||||
requirejs.config(config());
|
requirejs.config(config());
|
||||||
return function main(options) {
|
return function main(options) {
|
||||||
var opts = _.defaults({}, options, {config: {}});
|
var opts = _.defaults({}, options, {config: {}});
|
||||||
var app = new App(opts);
|
var app = new App(opts);
|
||||||
|
|
||||||
|
app.on('start', function () {
|
||||||
|
if (!Backbone.history.start({pushState: true})) {
|
||||||
|
app.router.navigate('slide/1');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
app.start(opts.config);
|
app.start(opts.config);
|
||||||
|
|
||||||
return app;
|
return app;
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
define(['core/model'], function (Model) {
|
||||||
|
describe('Model', function () {
|
||||||
|
it('→ exits', function () {
|
||||||
|
expect(new Model()).not.toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('→ triggerMethod', function () {
|
||||||
|
it('→ exits', function () {
|
||||||
|
expect((new Model()).triggerMethod).not.toBeUndefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,26 @@
|
|||||||
|
define(['backbone', 'core/router'], function (Backbone, Router) {
|
||||||
|
describe('Router', function () {
|
||||||
|
it('→ exits', function () {
|
||||||
|
expect(new Router()).not.toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('→ is passed model', function () {
|
||||||
|
it('→ exits', function () {
|
||||||
|
expect((new Router()).model).not.toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('→ same as passed in', function () {
|
||||||
|
var model = new Backbone.Model();
|
||||||
|
expect((new Router({model: model})).model).toBe(model);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('→ navigate changes model', function () {
|
||||||
|
it('→ goes to the number for page', function () {
|
||||||
|
var router = new Router();
|
||||||
|
router.slide('123');
|
||||||
|
expect(router.model.get('slide')).toBe(123);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue