aboutsummaryrefslogtreecommitdiffstats
path: root/test/ng/compileSpec.js
diff options
context:
space:
mode:
authorIgor Minar2012-08-11 00:13:10 -0700
committerIgor Minar2012-08-13 14:33:56 -0700
commitdfe99836cd98c2a1b0f9bde6216bd44088de275a (patch)
treecf71c7d1311a716f56a4c55526765478493771e3 /test/ng/compileSpec.js
parent0f37194fb7ce67c3719626d9e21d95a66538a0e4 (diff)
downloadangular.js-dfe99836cd98c2a1b0f9bde6216bd44088de275a.tar.bz2
fix($compile): denormalize directive templates
Since developers are allowed to customize start/end interpolation strings, but third-party directive creators don't know about these customizations, we should standardize on {{ }} in templates of reusable (third-party) directives. During the compilation, these templates are then denormalized to use whatever the custom start/end symbol is, effectively translating the template into the syntax of the runtime environment. This addresses an issue raised at http://goo.gl/e8VPV Existing code should not be affected by this change since project that do use custom interpolation markers are not expected to use {{ }} in existing directive templates.
Diffstat (limited to 'test/ng/compileSpec.js')
-rw-r--r--test/ng/compileSpec.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js
index cbf84a38..3d6144ac 100644
--- a/test/ng/compileSpec.js
+++ b/test/ng/compileSpec.js
@@ -1372,6 +1372,47 @@ describe('$compile', function() {
'<option>Greet Misko!</option>' +
'</select>');
}));
+
+
+ it('should support custom start/end interpolation symbols in template and directive template',
+ function() {
+ module(function($interpolateProvider, $compileProvider) {
+ $interpolateProvider.startSymbol('##').endSymbol(']]');
+ $compileProvider.directive('myDirective', function() {
+ return {
+ template: '<span>{{hello}}|{{hello|uppercase}}</span>'
+ };
+ });
+ });
+
+ inject(function($compile, $rootScope) {
+ element = $compile('<div>##hello|uppercase]]|<div my-directive></div></div>')($rootScope);
+ $rootScope.hello = 'ahoj';
+ $rootScope.$digest();
+ expect(element.text()).toBe('AHOJ|ahoj|AHOJ');
+ });
+ });
+
+
+ it('should support custom start/end interpolation symbols in async directive template',
+ function() {
+ module(function($interpolateProvider, $compileProvider) {
+ $interpolateProvider.startSymbol('##').endSymbol(']]');
+ $compileProvider.directive('myDirective', function() {
+ return {
+ templateUrl: 'myDirective.html'
+ };
+ });
+ });
+
+ inject(function($compile, $rootScope, $templateCache) {
+ $templateCache.put('myDirective.html', '<span>{{hello}}|{{hello|uppercase}}</span>');
+ element = $compile('<div>##hello|uppercase]]|<div my-directive></div></div>')($rootScope);
+ $rootScope.hello = 'ahoj';
+ $rootScope.$digest();
+ expect(element.text()).toBe('AHOJ|ahoj|AHOJ');
+ });
+ });
});