aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatias Niemelä2013-08-17 11:48:48 -0400
committerMisko Hevery2013-08-19 14:55:19 -0700
commitb7a54497b51061d0f5d9ae74b74f5dd7c8eae51d (patch)
treef80890840ff2b62f305e6d15134fea5315d9662c /src
parent6749fef227a5a633b4858c9a2d6f630078493dbe (diff)
downloadangular.js-b7a54497b51061d0f5d9ae74b74f5dd7c8eae51d.tar.bz2
revert(ngView): remove ngView manual transclusion system
Diffstat (limited to 'src')
-rw-r--r--src/ngRoute/directive/ngView.js80
1 files changed, 38 insertions, 42 deletions
diff --git a/src/ngRoute/directive/ngView.js b/src/ngRoute/directive/ngView.js
index 44232231..6a1f2012 100644
--- a/src/ngRoute/directive/ngView.js
+++ b/src/ngRoute/directive/ngView.js
@@ -1,5 +1,7 @@
'use strict';
+ngRouteModule.directive('ngView', ngViewFactory);
+
/**
* @ngdoc directive
* @name ngRoute.directive:ngView
@@ -167,22 +169,17 @@
* @description
* Emitted every time the ngView content is reloaded.
*/
-var NG_VIEW_PRIORITY = 500;
-var ngViewDirective = ['$route', '$anchorScroll', '$compile', '$controller', '$animate',
- function($route, $anchorScroll, $compile, $controller, $animate) {
+ngViewFactory.$inject = ['$route', '$anchorScroll', '$compile', '$controller', '$animate'];
+function ngViewFactory( $route, $anchorScroll, $compile, $controller, $animate) {
return {
restrict: 'ECA',
terminal: true,
- priority: NG_VIEW_PRIORITY,
- compile: function(element, attr) {
- var onloadExp = attr.onload || '';
-
- element.html('');
- var anchor = jqLite(document.createComment(' ngView '));
- element.replaceWith(anchor);
-
- return function(scope) {
- var currentScope, currentElement;
+ transclude: 'element',
+ compile: function(element, attr, linker) {
+ return function(scope, $element, attr) {
+ var currentScope,
+ currentElement,
+ onloadExp = attr.onload || '';
scope.$on('$routeChangeSuccess', update);
update();
@@ -203,35 +200,36 @@ var ngViewDirective = ['$route', '$anchorScroll', '$compile', '$controller', '$a
template = locals && locals.$template;
if (template) {
- cleanupLastView();
-
- currentScope = scope.$new();
- currentElement = element.clone();
- currentElement.html(template);
- $animate.enter(currentElement, null, anchor);
-
- var link = $compile(currentElement, false, NG_VIEW_PRIORITY - 1),
- current = $route.current;
-
- if (current.controller) {
- locals.$scope = currentScope;
- var controller = $controller(current.controller, locals);
- if (current.controllerAs) {
- currentScope[current.controllerAs] = controller;
+ var newScope = scope.$new();
+ linker(newScope, function(clone) {
+ cleanupLastView();
+
+ clone.html(template);
+ $animate.enter(clone, null, $element);
+
+ var link = $compile(clone.contents()),
+ current = $route.current;
+
+ currentScope = current.scope = newScope;
+ currentElement = clone;
+
+ if (current.controller) {
+ locals.$scope = currentScope;
+ var controller = $controller(current.controller, locals);
+ if (current.controllerAs) {
+ currentScope[current.controllerAs] = controller;
+ }
+ clone.data('$ngControllerController', controller);
+ clone.contents().data('$ngControllerController', controller);
}
- currentElement.data('$ngControllerController', controller);
- currentElement.children().data('$ngControllerController', controller);
- }
-
- current.scope = currentScope;
- link(currentScope);
+ link(currentScope);
+ currentScope.$emit('$viewContentLoaded');
+ currentScope.$eval(onloadExp);
- currentScope.$emit('$viewContentLoaded');
- currentScope.$eval(onloadExp);
-
- // $anchorScroll might listen on event...
- $anchorScroll();
+ // $anchorScroll might listen on event...
+ $anchorScroll();
+ });
} else {
cleanupLastView();
}
@@ -239,6 +237,4 @@ var ngViewDirective = ['$route', '$anchorScroll', '$compile', '$controller', '$a
}
}
};
-}];
-
-ngRouteModule.directive('ngView', ngViewDirective);
+}