aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Minar2011-10-07 14:11:32 -0700
committerIgor Minar2011-10-12 23:04:48 -0700
commit8611ebe6a0d61092c1e66eb636e817c1445fd73f (patch)
tree36d0e6acf79845f399b05fc5f475805c87ae0b7f
parent8f46a3c9ac075c6300e974efaecd0d10d986a515 (diff)
downloadangular.js-8611ebe6a0d61092c1e66eb636e817c1445fd73f.tar.bz2
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.
-rw-r--r--src/Compiler.js1
-rw-r--r--test/CompilerSpec.js33
-rw-r--r--test/markupSpec.js13
3 files changed, 42 insertions, 5 deletions
diff --git a/src/Compiler.js b/src/Compiler.js
index a355444b..adbab7e7 100644
--- a/src/Compiler.js
+++ b/src/Compiler.js
@@ -203,6 +203,7 @@ Compiler.prototype = {
scope.$element = element;
(cloneConnectFn||noop)(element, scope);
template.link(element, scope);
+ if (!scope.$$phase) scope.$digest();
return scope;
};
},
diff --git a/test/CompilerSpec.js b/test/CompilerSpec.js
index e0dcafc0..2cb7d19d 100644
--- a/test/CompilerSpec.js
+++ b/test/CompilerSpec.js
@@ -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>');
});
diff --git a/test/markupSpec.js b/test/markupSpec.js
index d505ee73..a05ca44f 100644
--- a/test/markupSpec.js
+++ b/test/markupSpec.js
@@ -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() {