Skip to content

Commit dd827e3

Browse files
creyndersmmikeyy
authored andcommitted
See GeppettoJS#51, resolve dependencies before calling initialize
1 parent 64da9e3 commit dd827e3

File tree

3 files changed

+26
-13
lines changed

3 files changed

+26
-13
lines changed

backbone.geppetto.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@
4040
Resolver.prototype = {
4141
_createAndSetupInstance: function(Clazz, wiring) {
4242
var instance = new Clazz();
43-
this.resolve(instance, wiring);
43+
if (!instance.initialize) {
44+
this.resolve(instance, wiring);
45+
}
4446
return instance;
4547
},
4648

@@ -69,15 +71,18 @@
6971
},
7072

7173
_wrapConstructor: function(OriginalConstructor, wiring) {
74+
if (OriginalConstructor.prototype.initialize) {
75+
var context = this._context;
7276

73-
var context = this._context;
74-
75-
return OriginalConstructor.extend({
76-
initialize: function() {
77-
context.resolver.resolve(this, wiring);
78-
OriginalConstructor.prototype.initialize.apply(this, arguments);
79-
}
80-
});
77+
return OriginalConstructor.extend({
78+
initialize: function() {
79+
context.resolver.resolve(this, wiring);
80+
OriginalConstructor.prototype.initialize.apply(this, arguments);
81+
}
82+
});
83+
} else {
84+
return OriginalConstructor;
85+
}
8186
},
8287

8388

@@ -100,7 +105,7 @@
100105

101106
wireClass: function(key, clazz, wiring) {
102107
this._mappings[key] = {
103-
clazz: clazz,
108+
clazz: this._wrapConstructor(clazz, wiring),
104109
object: null,
105110
type: TYPES.OTHER,
106111
wiring: wiring
@@ -120,7 +125,7 @@
120125
wireSingleton: function(key, clazz, wiring) {
121126

122127
this._mappings[key] = {
123-
clazz: clazz,
128+
clazz: this._wrapConstructor(clazz, wiring),
124129
object: null,
125130
type: TYPES.SINGLETON,
126131
wiring: wiring

dist/backbone.geppetto.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

specs/src/resolver-specs.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,8 +368,12 @@ define([
368368
var clazz = function(){
369369
clazzInstantiated++;
370370
};
371+
var resolvedDependency;
371372
var singleton = Backbone.Model.extend({
372-
wiring : ['clazz']
373+
wiring : ['clazz'],
374+
initialize : function(){
375+
resolvedDependency = this.clazz;
376+
}
373377
});
374378
beforeEach(function(){
375379
clazzInstantiated=0;
@@ -380,6 +384,10 @@ define([
380384
var actual = resolver.getObject('singleton');
381385
expect(clazzInstantiated ).to.equal(1);
382386
});
387+
it("should resolve dependencies before initialization", function(){
388+
var actual = resolver.getObject('singleton');
389+
expect(resolvedDependency ).to.be.instanceOf(clazz);
390+
});
383391
});
384392
});
385393

0 commit comments

Comments
 (0)