aboutsummaryrefslogtreecommitdiffstats
path: root/src/scenario
diff options
context:
space:
mode:
authorVojta Jina2011-11-29 21:51:59 -0800
committerVojta Jina2012-01-23 11:05:36 -0800
commit992c790f0786fa45c1cc3710f29bf49c7c322ba7 (patch)
tree581d06ea9ba275a14d5891d83b2df03f9930bd45 /src/scenario
parentf5343c9fd3c7cd0fefdb4d71d2b579dbae998d6a (diff)
downloadangular.js-992c790f0786fa45c1cc3710f29bf49c7c322ba7.tar.bz2
refactor(scope): separate controller from scope
Controller is standalone object, created using "new" operator, not messed up with scope anymore. Instead, related scope is injected as $scope. See design proposal: https://docs.google.com/document/pub?id=1SsgVj17ec6tnZEX3ugsvg0rVVR11wTso5Md-RdEmC0k Closes #321 Closes #425 Breaks controller methods are not exported to scope automatically Breaks Scope#$new() does not take controller as argument anymore
Diffstat (limited to 'src/scenario')
-rw-r--r--src/scenario/Runner.js11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/scenario/Runner.js b/src/scenario/Runner.js
index cfde1f64..06ad3aa1 100644
--- a/src/scenario/Runner.js
+++ b/src/scenario/Runner.js
@@ -152,7 +152,16 @@ angular.scenario.Runner.prototype.afterEach = function(body) {
* @param {Object} scope parent scope
*/
angular.scenario.Runner.prototype.createSpecRunner_ = function(scope) {
- return scope.$new(angular.scenario.SpecRunner);
+ var child = scope.$new();
+ var Cls = angular.scenario.SpecRunner;
+
+ // Export all the methods to child scope manually as now we don't mess controllers with scopes
+ // TODO(vojta): refactor scenario runner so that these objects are not tightly coupled as current
+ for (var name in Cls.prototype)
+ child[name] = angular.bind(child, Cls.prototype[name]);
+
+ Cls.call(child);
+ return child;
};
/**