aboutsummaryrefslogtreecommitdiffstats
path: root/test/ng/compileSpec.js
diff options
context:
space:
mode:
authorIgor Minar2012-05-02 21:08:02 -0700
committerIgor Minar2012-05-03 00:15:26 -0700
commit705f4bbf115d2408e33b25f56edbf1f383aabb82 (patch)
tree63e34d7405929c81aa4cb7104d2c468bfc4b559e /test/ng/compileSpec.js
parentbd530e225750e9b30b6300fc3d7447a5f1071667 (diff)
downloadangular.js-705f4bbf115d2408e33b25f56edbf1f383aabb82.tar.bz2
fix($compile): attach scope to the directive element when templateUrl and replace=true
We forgot to reattach the scope to the replacement element. This affected only directives that had templateUrl and replace:true properties. Reported on the mailing list: https://groups.google.com/forum/?fromgroups#!topic/angular/zwjLr1msS2Y http://jsfiddle.net/lukebayes/g9Sh9/
Diffstat (limited to 'test/ng/compileSpec.js')
-rw-r--r--test/ng/compileSpec.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js
index 74eaec8a..1c4a1d30 100644
--- a/test/ng/compileSpec.js
+++ b/test/ng/compileSpec.js
@@ -991,6 +991,33 @@ describe('$compile', function() {
}
};
});
+ $compileProvider.directive('tscope' + uppercase(name), function(log) {
+ return {
+ scope: true,
+ restrict: 'CA',
+ templateUrl: 'tscope.html',
+ compile: function() {
+ return function (scope, element) {
+ log(scope.$id);
+ expect(element.data('$scope')).toBe(scope);
+ };
+ }
+ };
+ });
+ $compileProvider.directive('trscope' + uppercase(name), function(log) {
+ return {
+ scope: true,
+ replace: true,
+ restrict: 'CA',
+ templateUrl: 'trscope.html',
+ compile: function() {
+ return function (scope, element) {
+ log(scope.$id);
+ expect(element.data('$scope')).toBe(scope);
+ };
+ }
+ };
+ });
$compileProvider.directive('tiscope' + uppercase(name), function(log) {
return {
scope: {},
@@ -1034,6 +1061,33 @@ describe('$compile', function() {
}));
+ it('should allow creation of new scopes for directives with templates', inject(
+ function($rootScope, $compile, log, $httpBackend) {
+ $httpBackend.expect('GET', 'tscope.html').respond('<a log>{{name}}; scopeId: {{$id}}</a>');
+ element = $compile('<div><span tscope></span></div>')($rootScope);
+ $httpBackend.flush();
+ expect(log).toEqual('LOG; log-002-001; 002');
+ $rootScope.name = 'Jozo';
+ $rootScope.$apply();
+ expect(element.text()).toBe('Jozo; scopeId: 002');
+ expect(element.find('span').scope().$id).toBe('002');
+ }));
+
+
+ it('should allow creation of new scopes for replace directives with templates', inject(
+ function($rootScope, $compile, log, $httpBackend) {
+ $httpBackend.expect('GET', 'trscope.html').
+ respond('<p><a log>{{name}}; scopeId: {{$id}}</a></p>');
+ element = $compile('<div><span trscope></span></div>')($rootScope);
+ $httpBackend.flush();
+ expect(log).toEqual('LOG; log-002-001; 002');
+ $rootScope.name = 'Jozo';
+ $rootScope.$apply();
+ expect(element.text()).toBe('Jozo; scopeId: 002');
+ expect(element.find('a').scope().$id).toBe('002');
+ }));
+
+
it('should allow creation of new isolated scopes for directives with templates', inject(
function($rootScope, $compile, log, $httpBackend) {
$httpBackend.expect('GET', 'tiscope.html').respond('<a log></a>');