mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-17 07:40:22 +00:00
fix(compiler): linking function should call $digest
The linked scope should be $digest-ed but only if a $digest isn't already running on it.
This commit is contained in:
parent
8f46a3c9ac
commit
8611ebe6a0
3 changed files with 42 additions and 5 deletions
|
|
@ -203,6 +203,7 @@ Compiler.prototype = {
|
|||
scope.$element = element;
|
||||
(cloneConnectFn||noop)(element, scope);
|
||||
template.link(element, scope);
|
||||
if (!scope.$$phase) scope.$digest();
|
||||
return scope;
|
||||
};
|
||||
},
|
||||
|
|
|
|||
|
|
@ -107,15 +107,42 @@ describe('compiler', function() {
|
|||
};
|
||||
};
|
||||
scope = compile('before<span duplicate="expr">x</span>after');
|
||||
expect(sortedHtml(scope.$element)).
|
||||
toEqual('<div>' +
|
||||
'before<#comment></#comment>' +
|
||||
'<span>x</span>' +
|
||||
'after' +
|
||||
'</div>');
|
||||
scope.value = 1;
|
||||
scope.$digest();
|
||||
expect(sortedHtml(scope.$element)).toEqual('<div>before<#comment></#comment><span>x</span>after</div>');
|
||||
expect(sortedHtml(scope.$element)).
|
||||
toEqual('<div>' +
|
||||
'before<#comment></#comment>' +
|
||||
'<span>x</span>' +
|
||||
'<span>x</span>' +
|
||||
'after' +
|
||||
'</div>');
|
||||
scope.value = 2;
|
||||
scope.$digest();
|
||||
expect(sortedHtml(scope.$element)).toEqual('<div>before<#comment></#comment><span>x</span><span>x</span>after</div>');
|
||||
expect(sortedHtml(scope.$element)).
|
||||
toEqual('<div>' +
|
||||
'before<#comment></#comment>' +
|
||||
'<span>x</span>' +
|
||||
'<span>x</span>' +
|
||||
'<span>x</span>' +
|
||||
'after' +
|
||||
'</div>');
|
||||
scope.value = 3;
|
||||
scope.$digest();
|
||||
expect(sortedHtml(scope.$element)).toEqual('<div>before<#comment></#comment><span>x</span><span>x</span><span>x</span>after</div>');
|
||||
expect(sortedHtml(scope.$element)).
|
||||
toEqual('<div>' +
|
||||
'before<#comment></#comment>' +
|
||||
'<span>x</span>' +
|
||||
'<span>x</span>' +
|
||||
'<span>x</span>' +
|
||||
'<span>x</span>' +
|
||||
'after' +
|
||||
'</div>');
|
||||
});
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -167,11 +167,20 @@ describe("markups", function() {
|
|||
});
|
||||
|
||||
it('should bind Text with no Bindings', function() {
|
||||
forEach('src,href,checked,disabled,multiple,readonly,selected'.split(','), function(name) {
|
||||
forEach(['checked', 'disabled', 'multiple', 'readonly', 'selected'], function(name) {
|
||||
compile('<div ng:' + name +'="some"></div>');
|
||||
expect(sortedHtml(element)).toEqual('<div ng:bind-attr="{"' + name +'":"some"}"></div>');
|
||||
expect(element.attr('ng:bind-attr')).toBe('{"' + name +'":"some"}');
|
||||
expect(element.attr(name)).toBe(name);
|
||||
dealoc(element);
|
||||
});
|
||||
|
||||
compile('<div ng:src="some"></div>');
|
||||
expect(sortedHtml(element)).toEqual('<div ng:bind-attr="{"src":"some"}" src="some"></div>');
|
||||
dealoc(element);
|
||||
|
||||
compile('<div ng:href="some"></div>');
|
||||
expect(sortedHtml(element)).toEqual('<div href="some" ng:bind-attr="{"href":"some"}"></div>');
|
||||
dealoc(element);
|
||||
});
|
||||
|
||||
it('should Parse Text With No Bindings', function() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue