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';
|
||||
requirejs.config(config());
|
||||
return function main(options) {
|
||||
var app = new App();
|
||||
app.start(options);
|
||||
var opts = _.defaults({}, options, {config: {}});
|
||||
var app = new App(opts);
|
||||
app.start(opts.config);
|
||||
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