From 92ca7efaa4bc4f37da3008b234e19343a1fa4207 Mon Sep 17 00:00:00 2001 From: Enrique Paredes Date: Mon, 4 Feb 2013 20:38:52 +0100 Subject: 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 13f8ae7e..18adc2c9 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 b4ec0292..a7707cf9 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'); + }); + }); }); -- cgit v1.2.3