diff options
| author | Vojta Jina | 2011-11-29 21:51:59 -0800 |
|---|---|---|
| committer | Vojta Jina | 2012-01-23 11:05:36 -0800 |
| commit | 992c790f0786fa45c1cc3710f29bf49c7c322ba7 (patch) | |
| tree | 581d06ea9ba275a14d5891d83b2df03f9930bd45 /docs/content/cookbook/deeplinking.ngdoc | |
| parent | f5343c9fd3c7cd0fefdb4d71d2b579dbae998d6a (diff) | |
| download | angular.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 'docs/content/cookbook/deeplinking.ngdoc')
| -rw-r--r-- | docs/content/cookbook/deeplinking.ngdoc | 46 |
1 files changed, 21 insertions, 25 deletions
diff --git a/docs/content/cookbook/deeplinking.ngdoc b/docs/content/cookbook/deeplinking.ngdoc index 2ef3da4a..a4dc3a9b 100644 --- a/docs/content/cookbook/deeplinking.ngdoc +++ b/docs/content/cookbook/deeplinking.ngdoc @@ -39,42 +39,38 @@ The two partials are defined in the following URLs: <doc:example> <doc:source jsfiddle="false"> <script> - AppCntl.$inject = ['$route'] - function AppCntl($route) { + AppCntl.$inject = ['$scope', '$route'] + function AppCntl($scope, $route) { // define routes $route.when("/welcome", {template:'./examples/welcome.html', controller:WelcomeCntl}); $route.when("/settings", {template:'./examples/settings.html', controller:SettingsCntl}); - $route.parent(this); + $route.parent($scope); // initialize the model to something useful - this.person = { + $scope.person = { name:'anonymous', contacts:[{type:'email', url:'anonymous@example.com'}] }; } - function WelcomeCntl($route){} - WelcomeCntl.prototype = { - greet: function() { - alert("Hello " + this.person.name); - } - }; - - SettingsCntl.$inject = ['$location']; - function SettingsCntl($location){ - this.$location = $location; - this.cancel(); + function WelcomeCntl($scope) { + $scope.greet = function() { + alert("Hello " + $scope.person.name); + }; + } + + function SettingsCntl($scope, $location) { + $scope.cancel = function() { + $scope.form = angular.copy($scope.person); + }; + + $scope.save = function() { + angular.copy($scope.form, $scope.person); + $location.path('/welcome'); + }; + + $scope.cancel(); } - SettingsCntl.prototype = { - cancel: function() { - this.form = angular.copy(this.person); - }, - - save: function() { - angular.copy(this.form, this.person); - this.$location.path('/welcome'); - } - }; </script> <div ng:controller="AppCntl"> <h1>Your App Chrome</h1> |
