diff options
| author | Misko Hevery | 2011-03-23 09:33:29 -0700 |
|---|---|---|
| committer | Vojta Jina | 2011-08-02 01:00:03 +0200 |
| commit | 8f0dcbab804180828d6859b1340c86cf161209fb (patch) | |
| tree | d13d47d47a1889cb7c96a87cecacd2e25307d51c /src/scenario/Runner.js | |
| parent | 1f4b417184ce53af15474de065400f8a686430c5 (diff) | |
| download | angular.js-8f0dcbab804180828d6859b1340c86cf161209fb.tar.bz2 | |
feat(scope): new and improved scope implementation
- Speed improvements (about 4x on flush phase)
- Memory improvements (uses no function closures)
- Break $eval into $apply, $dispatch, $flush
- Introduced $watch and $observe
Breaks angular.equals() use === instead of ==
Breaks angular.scope() does not take parent as first argument
Breaks scope.$watch() takes scope as first argument
Breaks scope.$set(), scope.$get are removed
Breaks scope.$config is removed
Breaks $route.onChange callback has not "this" bounded
Diffstat (limited to 'src/scenario/Runner.js')
| -rw-r--r-- | src/scenario/Runner.js | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/scenario/Runner.js b/src/scenario/Runner.js index eb9d0320..f3211fd2 100644 --- a/src/scenario/Runner.js +++ b/src/scenario/Runner.js @@ -163,9 +163,13 @@ angular.scenario.Runner.prototype.createSpecRunner_ = function(scope) { */ angular.scenario.Runner.prototype.run = function(application) { var self = this; - var $root = angular.scope(this); + var $root = angular.scope(); + angular.extend($root, this); + angular.forEach(angular.scenario.Runner.prototype, function(fn, name) { + $root[name] = angular.bind(self, fn); + }); $root.application = application; - this.emit('RunnerBegin'); + $root.emit('RunnerBegin'); asyncForEach(this.rootDescribe.getSpecs(), function(spec, specDone) { var dslCache = {}; var runner = self.createSpecRunner_($root); @@ -175,7 +179,7 @@ angular.scenario.Runner.prototype.run = function(application) { angular.forEach(angular.scenario.dsl, function(fn, key) { self.$window[key] = function() { var line = callerFile(3); - var scope = angular.scope(runner); + var scope = runner.$new(); // Make the dsl accessible on the current chain scope.dsl = {}; @@ -200,7 +204,10 @@ angular.scenario.Runner.prototype.run = function(application) { return scope.dsl[key].apply(scope, arguments); }; }); - runner.run(spec, specDone); + runner.run(spec, function() { + runner.$destroy(); + specDone.apply(this, arguments); + }); }, function(error) { if (error) { |
