Create layout module
parent
44e4ce2a77
commit
07b9f12fac
@ -0,0 +1,18 @@
|
|||||||
|
define(['backbone'], function LayoutModelDefine(Backbone) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var Model = Backbone.Model;
|
||||||
|
|
||||||
|
function LayoutModel() {
|
||||||
|
Model.apply(this, arguments);
|
||||||
|
}
|
||||||
|
LayoutModel.prototype = new Model();
|
||||||
|
|
||||||
|
LayoutModel.prototype.defaults = function defaults() {
|
||||||
|
return {
|
||||||
|
title: 'some title'
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
return LayoutModel;
|
||||||
|
});
|
@ -0,0 +1,26 @@
|
|||||||
|
define([
|
||||||
|
'underscore',
|
||||||
|
'marionette',
|
||||||
|
'core/layout/view',
|
||||||
|
'core/layout/model'
|
||||||
|
], function LayoutModuleDefine(_, Marionette, LayoutView, LayoutModel) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var LayoutModule = Marionette.Module.extend({
|
||||||
|
Model: LayoutModel,
|
||||||
|
View: LayoutView,
|
||||||
|
|
||||||
|
onStart: function(options) {
|
||||||
|
var opts = _.defaults({}, options || {}, {layout: {}});
|
||||||
|
_.defaults(opts.layout, {view: {}, model: {}});
|
||||||
|
|
||||||
|
var config = opts.layout;
|
||||||
|
this.model = new this.Model(config.model);
|
||||||
|
config.view.model = this.model;
|
||||||
|
this.view = new this.View(config.view);
|
||||||
|
this.view.render();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return LayoutModule;
|
||||||
|
});
|
@ -0,0 +1,12 @@
|
|||||||
|
define([
|
||||||
|
'marionette',
|
||||||
|
'core/layout/template'
|
||||||
|
], function CoreLayoutDefine(Marionette, template) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var CoreLayout = Marionette.LayoutView.extend({
|
||||||
|
template: template
|
||||||
|
});
|
||||||
|
|
||||||
|
return CoreLayout;
|
||||||
|
});
|
@ -1,9 +1,10 @@
|
|||||||
define('main', ['config', 'app'], function main(config, App) {
|
define('main', ['underscore', 'config', 'app'], function main(_, config, App) {
|
||||||
'use strict';
|
'use strict';
|
||||||
requirejs.config(config());
|
requirejs.config(config());
|
||||||
return function main(options) {
|
return function main(options) {
|
||||||
var app = new App();
|
var opts = _.defaults({}, options, {config: {}});
|
||||||
app.start(options);
|
var app = new App(opts);
|
||||||
|
app.start(opts.config);
|
||||||
return app;
|
return app;
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
define(['core/layout/model'], function (LayoutModel) {
|
||||||
|
describe('LayoutModel', function () {
|
||||||
|
it('→ exits', function () {
|
||||||
|
expect(new LayoutModel()).not.toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('→ has defaults', function () {
|
||||||
|
it('→ title', function () {
|
||||||
|
expect(typeof (new LayoutModel()).get('title')).toBe('string');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,22 @@
|
|||||||
|
define([
|
||||||
|
'marionette',
|
||||||
|
'core/layout/module'
|
||||||
|
], function (Marionette, LayoutModule) {
|
||||||
|
describe('LayoutModule', function () {
|
||||||
|
it('→ exits', function () {
|
||||||
|
var app = new Marionette.Application();
|
||||||
|
var module = new LayoutModule('layout', app, {});
|
||||||
|
expect(module).not.toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('→ onStart', function () {
|
||||||
|
it('→ will render view', function () {
|
||||||
|
var app = new Marionette.Application();
|
||||||
|
var module = new LayoutModule('layout', app, {});
|
||||||
|
spyOn(module.View.prototype, 'render');
|
||||||
|
module.onStart();
|
||||||
|
expect(module.View.prototype.render).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,7 @@
|
|||||||
|
define(['core/layout/view'], function (LayoutView) {
|
||||||
|
describe('→ LayoutView', function () {
|
||||||
|
it('→ exists', function () {
|
||||||
|
expect(new LayoutView()).not.toBeUndefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue