From 92ca7efaa4bc4f37da3008b234e19343a1fa4207 Mon Sep 17 00:00:00 2001 From: Enrique Paredes Date: Mon, 4 Feb 2013 20:38:52 +0100 Subject: [PATCH] fix($compile): rename $compileNote to compileNode Directives was observing different instances of Attributes than the one that interpolation was registered with because we failed to realize that the compile node and link node were the same (one of them was a wrapper rather than raw node) Closes #1941 --- src/ng/compile.js | 2 +- test/ng/compileSpec.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) 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'); + }); + }); });