mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-29 20:40:29 +00:00
fix($compile): create new (isolate) scopes for directives on root elements
previously we would not create them and it's causing all kinds of issues and accidental leaks Closes #817
This commit is contained in:
parent
8d7e694849
commit
5390fb37d2
2 changed files with 15 additions and 6 deletions
|
|
@ -324,7 +324,7 @@ function $CompileProvider($provide) {
|
|||
childLinkingFn = /* nodesetLinkingFn */ linkingFns[i++];
|
||||
|
||||
if (directiveLinkingFn) {
|
||||
if (directiveLinkingFn.scope && !rootElement) {
|
||||
if (directiveLinkingFn.scope) {
|
||||
childScope = scope.$new(isObject(directiveLinkingFn.scope));
|
||||
jqLite(node).data('$scope', childScope);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1035,10 +1035,11 @@ describe('$compile', function() {
|
|||
);
|
||||
|
||||
|
||||
it('should allow more then one scope creation per element', inject(
|
||||
it('should allow more one new scope directives per element, but directives should share' +
|
||||
'the scope', inject(
|
||||
function($rootScope, $compile, log) {
|
||||
$compile('<div class="scope-a; scope-b"></div>')($rootScope);
|
||||
expect(log).toEqual('001; 001');
|
||||
element = $compile('<div class="scope-a; scope-b"></div>')($rootScope);
|
||||
expect(log).toEqual('002; 002');
|
||||
})
|
||||
);
|
||||
|
||||
|
|
@ -1064,10 +1065,18 @@ describe('$compile', function() {
|
|||
);
|
||||
|
||||
|
||||
it('should treat new scope on new template as noop', inject(
|
||||
it('should create new scope even at the root of the template', inject(
|
||||
function($rootScope, $compile, log) {
|
||||
element = $compile('<div scope-a></div>')($rootScope);
|
||||
expect(log).toEqual('001');
|
||||
expect(log).toEqual('002');
|
||||
})
|
||||
);
|
||||
|
||||
|
||||
it('should create isolate scope even at the root of the template', inject(
|
||||
function($rootScope, $compile, log) {
|
||||
element = $compile('<div iscope></div>')($rootScope);
|
||||
expect(log).toEqual('002');
|
||||
})
|
||||
);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue