diff --git a/src/ng/compile.js b/src/ng/compile.js index 13f8ae7ef62b..18adc2c9eff7 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -938,7 +938,7 @@ function $CompileProvider($provide) { } directives.unshift(derivedSyncDirective); - afterTemplateNodeLinkFn = applyDirectivesToNode(directives, $compileNode, tAttrs, childTranscludeFn); + afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs, childTranscludeFn); afterTemplateChildLinkFn = compileNodes($compileNode.contents(), childTranscludeFn); diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index b4ec029215ae..a7707cf9ee30 100644 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -1538,6 +1538,25 @@ describe('$compile', function() { expect(element.text()).toEqual('WORKS'); }); }); + + it('should support $observe inside link function on directive object', function() { + module(function() { + directive('testLink', valueFn({ + templateUrl: 'test-link.html', + link: function(scope, element, attrs) { + attrs.$observe( 'testLink', function ( val ) { + scope.testAttr = val; + }); + } + })); + }); + inject(function($compile, $rootScope, $templateCache) { + $templateCache.put('test-link.html', '{{testAttr}}' ); + element = $compile('
')($rootScope); + $rootScope.$apply(); + expect(element.text()).toBe('3'); + }); + }); });