diff options
| -rw-r--r-- | src/ng/compile.js | 2 | ||||
| -rwxr-xr-x | test/ng/compileSpec.js | 24 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/ng/compile.js b/src/ng/compile.js index 42b37a2d..5fefdaaa 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -1440,7 +1440,7 @@ function $CompileProvider($provide) { if (controllerDirectives) { forEach(controllerDirectives, function(directive) { var locals = { - $scope: directive === newIsolateScopeDirective ? isolateScope : scope, + $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope, $element: $element, $attrs: attrs, $transclude: boundTranscludeFn diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 75c111d7..356b1796 100755 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -2480,6 +2480,30 @@ describe('$compile', function() { }); + it('should give the isolate scope to the controller of another replaced directives in the template', function() { + module(function() { + directive('testDirective', function() { + return { + replace: true, + restrict: 'E', + scope: {}, + template: '<input type="checkbox" ng-model="model">' + }; + }); + }); + + inject(function($rootScope) { + compile('<div><test-directive></test-directive></div>'); + + element = element.children().eq(0); + expect(element[0].checked).toBe(false); + element.isolateScope().model = true; + $rootScope.$digest(); + expect(element[0].checked).toBe(true); + }); + }); + + it('should share isolate scope with replaced directives', function() { var normalScope; var isolateScope; |
