Skip to content

Commit

Permalink
bundles should return initializer instead of defined Controller
Browse files Browse the repository at this point in the history
  • Loading branch information
purge committed Nov 14, 2013
1 parent e4c5ba9 commit 6c86fe0
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 16 deletions.
14 changes: 8 additions & 6 deletions src/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,18 +60,20 @@ define(['require', 'lib/bonzo/bonzo', 'lib/qwery/qwery', 'lib/bean/bean', 'domRe
//when the promise is resolved initialise the bundle controller
SqwidgetCore.prototype.initialiseWidget = function(pkg, bundle) {

if(bundle.Controller) {
var widget = new bundle.Controller({
//run the bundles returned bootstrap
if(typeof bundle === 'function') {
var res = bundle({
sqwidget: this,
el: pkg.el,
config: pkg
});

//bus events
bean.fire(this, "rendered:" + pkg.url, [bundle]);
bean.fire(this, "rendered:" + pkg.id,[bundle]);
bean.fire(pkg, "rendered", [bundle]);
bean.fire(this, "rendered:" + pkg.url, [res]);
bean.fire(this, "rendered:" + pkg.id,[res]);
bean.fire(pkg, "rendered", [res]);
} else {
throw("controller not found for " + bundle.location);
throw("bundle should return a function to bootstrap" + bundle.location);
}
};

Expand Down
8 changes: 3 additions & 5 deletions test/fixture/example.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@
sqwidget.define(["require"], function(require) {

define("main", function() {
return {
Controller: function (opts) {
opts.config.el.append("<div>TEST</div>");
},
require: require
return function (opts) {
opts.el.append("<div>TEST</div>");
return { require: require };
};
});

Expand Down
8 changes: 3 additions & 5 deletions test/fixture/promise.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@ sqwidget.define(['require', '../../src/lib/when/when'] ,function(require, when)
var deferred = when.defer();
require(['/base/test/fixture/dummy_load.js'], function(dummy) {

var pkg = {
Controller: function (opts) {
opts.config.el.append("<div>PROMISE</div>");
},
require: require
var pkg = function(opts) {
opts.el.append("<div>PROMISE</div>");
return { require: require };
};

deferred.resolve(pkg);
Expand Down

0 comments on commit 6c86fe0

Please sign in to comment.