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';
|
||||
requirejs.config(config());
|
||||
return function main(options) {
|
||||
var opts = _.defaults({}, options, {config: {}});
|
||||
var app = new App(opts);
|
||||
|
||||
app.on('start', function () {
|
||||
if (!Backbone.history.start({pushState: true})) {
|
||||
app.router.navigate('slide/1');
|
||||
}
|
||||
});
|
||||
|
||||
app.start(opts.config);
|
||||
|
||||
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