aboutsummaryrefslogtreecommitdiffstats
path: root/test/ngRoute/directive/ngViewSpec.js
diff options
context:
space:
mode:
authorTobias Bosch2013-11-14 13:50:36 -0800
committerVojta Jina2013-11-14 20:59:50 -0800
commit90f87072e83234ae366cfeb3c281503c31dad738 (patch)
treed969b74c0fe993900bc91e3e9f1d8004d238ac2c /test/ngRoute/directive/ngViewSpec.js
parentc785918cbd245cc8ecf9a38e373b121c4e68a55b (diff)
downloadangular.js-90f87072e83234ae366cfeb3c281503c31dad738.tar.bz2
fix($compile): accessing controllers of transcluded directives from children
Additional API (backwards compatible) - Injects `$transclude` (see directive controllers) as 5th argument to directive link functions. - `$transclude` takes an optional scope as first parameter that overrides the bound scope. Deprecations: - `transclude` parameter of directive compile functions (use the new parameter for link functions instead). Refactorings: - Don't use comment node to temporarily store controllers - `ngIf`, `ngRepeat`, ... now all use `$transclude` Closes #4935.
Diffstat (limited to 'test/ngRoute/directive/ngViewSpec.js')
-rw-r--r--test/ngRoute/directive/ngViewSpec.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/ngRoute/directive/ngViewSpec.js b/test/ngRoute/directive/ngViewSpec.js
index 1df19d6a..e96da022 100644
--- a/test/ngRoute/directive/ngViewSpec.js
+++ b/test/ngRoute/directive/ngViewSpec.js
@@ -514,6 +514,44 @@ describe('ngView', function() {
});
});
+describe('ngView and transcludes', function() {
+ it('should allow access to directive controller from children when used in a replace template', function() {
+ var controller;
+ module('ngRoute');
+ module(function($compileProvider, $routeProvider) {
+ $routeProvider.when('/view', {templateUrl: 'view.html'});
+ var directive = $compileProvider.directive;
+ directive('template', function() {
+ return {
+ template: '<div ng-view></div>',
+ replace: true,
+ controller: function() {
+ this.flag = true;
+ }
+ };
+ });
+
+ directive('test', function() {
+ return {
+ require: '^template',
+ link: function(scope, el, attr, ctrl) {
+ controller = ctrl;
+ }
+ };
+ });
+ });
+ inject(function($compile, $rootScope, $httpBackend, $location) {
+ $httpBackend.expectGET('view.html').respond('<div><div test></div></div>');
+ var element = $compile('<div><div template></div></div>')($rootScope);
+ $location.url('/view');
+ $rootScope.$apply();
+ $httpBackend.flush();
+ expect(controller.flag).toBe(true);
+ dealoc(element);
+ });
+ });
+});
+
describe('ngView animations', function() {
var body, element, $rootElement;