diff options
| author | Francesco Pontillo | 2013-08-31 11:48:11 +0200 |
|---|---|---|
| committer | Brian Ford | 2013-10-01 15:08:23 -0700 |
| commit | 8e1276c011b33b90af47494dc5e76baf86468a5a (patch) | |
| tree | 63ab29694fa90ee2797dd95397f9f5f61de5fdaf | |
| parent | 6972596ce99f2a11ae07e65ebcb554cef1dd3240 (diff) | |
| download | angular.js-8e1276c011b33b90af47494dc5e76baf86468a5a.tar.bz2 | |
fix($compile): allow interpolations for non-event handlers attrs
Fix wrong behaviour that didn't allow 'data-on' and 'on' element attributes
to be interpolated by $compile. The regex now accepts any string beginning
with 'on' and with at least one more English letter.
| -rw-r--r-- | src/ng/compile.js | 2 | ||||
| -rwxr-xr-x | test/ng/compileSpec.js | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/ng/compile.js b/src/ng/compile.js index 040836f7..2aec8fcd 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -159,7 +159,7 @@ function $CompileProvider($provide) { // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes // The assumption is that future DOM event attribute names will begin with // 'on' and be composed of only English letters. - var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]*|formaction)$/; + var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/; /** * @ngdoc function diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 580d51c3..6b3a0479 100755 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -3250,6 +3250,18 @@ describe('$compile', function() { $rootScope.$apply(); expect(element.attr('on-click')).toEqual('javascript:doSomething()'); })); + + it('should pass through arbitrary values on "on" and "data-on" attributes', inject(function($compile, $rootScope) { + element = $compile('<button data-on="{{dataOnVar}}"></script>')($rootScope); + $rootScope.dataOnVar = 'data-on text'; + $rootScope.$apply(); + expect(element.attr('data-on')).toEqual('data-on text'); + + element = $compile('<button on="{{onVar}}"></script>')($rootScope); + $rootScope.onVar = 'on text'; + $rootScope.$apply(); + expect(element.attr('on')).toEqual('on text'); + })); }); describe('iframe[src]', function() { |
