Skip to content

Commit c0bc0dc

Browse files
committed
See GeppettoJS#51, resolve dependencies before calling initialize
1 parent f767071 commit c0bc0dc

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
createChildResolver: function() {
@@ -105,7 +110,7 @@
105110

106111
wireClass: function(key, clazz, wiring) {
107112
this._mappings[key] = {
108-
clazz: clazz,
113+
clazz: this._wrapConstructor(clazz, wiring),
109114
object: null,
110115
type: TYPES.OTHER,
111116
wiring: wiring
@@ -125,7 +130,7 @@
125130
wireSingleton: function(key, clazz, wiring) {
126131

127132
this._mappings[key] = {
128-
clazz: clazz,
133+
clazz: this._wrapConstructor(clazz, wiring),
129134
object: null,
130135
type: TYPES.SINGLETON,
131136
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)