Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 8611ebe

Browse files
committed
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.
1 parent 8f46a3c commit 8611ebe

File tree

3 files changed

+42
-5
lines changed

3 files changed

+42
-5
lines changed

src/Compiler.js

+1
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ Compiler.prototype = {
203203
scope.$element = element;
204204
(cloneConnectFn||noop)(element, scope);
205205
template.link(element, scope);
206+
if (!scope.$$phase) scope.$digest();
206207
return scope;
207208
};
208209
},

test/CompilerSpec.js

+30-3
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,42 @@ describe('compiler', function() {
107107
};
108108
};
109109
scope = compile('before<span duplicate="expr">x</span>after');
110+
expect(sortedHtml(scope.$element)).
111+
toEqual('<div>' +
112+
'before<#comment></#comment>' +
113+
'<span>x</span>' +
114+
'after' +
115+
'</div>');
110116
scope.value = 1;
111117
scope.$digest();
112-
expect(sortedHtml(scope.$element)).toEqual('<div>before<#comment></#comment><span>x</span>after</div>');
118+
expect(sortedHtml(scope.$element)).
119+
toEqual('<div>' +
120+
'before<#comment></#comment>' +
121+
'<span>x</span>' +
122+
'<span>x</span>' +
123+
'after' +
124+
'</div>');
113125
scope.value = 2;
114126
scope.$digest();
115-
expect(sortedHtml(scope.$element)).toEqual('<div>before<#comment></#comment><span>x</span><span>x</span>after</div>');
127+
expect(sortedHtml(scope.$element)).
128+
toEqual('<div>' +
129+
'before<#comment></#comment>' +
130+
'<span>x</span>' +
131+
'<span>x</span>' +
132+
'<span>x</span>' +
133+
'after' +
134+
'</div>');
116135
scope.value = 3;
117136
scope.$digest();
118-
expect(sortedHtml(scope.$element)).toEqual('<div>before<#comment></#comment><span>x</span><span>x</span><span>x</span>after</div>');
137+
expect(sortedHtml(scope.$element)).
138+
toEqual('<div>' +
139+
'before<#comment></#comment>' +
140+
'<span>x</span>' +
141+
'<span>x</span>' +
142+
'<span>x</span>' +
143+
'<span>x</span>' +
144+
'after' +
145+
'</div>');
119146
});
120147

121148

test/markupSpec.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,20 @@ describe("markups", function() {
167167
});
168168

169169
it('should bind Text with no Bindings', function() {
170-
forEach('src,href,checked,disabled,multiple,readonly,selected'.split(','), function(name) {
170+
forEach(['checked', 'disabled', 'multiple', 'readonly', 'selected'], function(name) {
171171
compile('<div ng:' + name +'="some"></div>');
172-
expect(sortedHtml(element)).toEqual('<div ng:bind-attr="{"' + name +'":"some"}"></div>');
172+
expect(element.attr('ng:bind-attr')).toBe('{"' + name +'":"some"}');
173+
expect(element.attr(name)).toBe(name);
173174
dealoc(element);
174175
});
176+
177+
compile('<div ng:src="some"></div>');
178+
expect(sortedHtml(element)).toEqual('<div ng:bind-attr="{"src":"some"}" src="some"></div>');
179+
dealoc(element);
180+
181+
compile('<div ng:href="some"></div>');
182+
expect(sortedHtml(element)).toEqual('<div href="some" ng:bind-attr="{"href":"some"}"></div>');
183+
dealoc(element);
175184
});
176185

177186
it('should Parse Text With No Bindings', function() {

0 commit comments

Comments
 (0)