diff options
| -rw-r--r-- | src/ng/compile.js | 2 | ||||
| -rw-r--r-- | test/jqLiteSpec.js | 3 | ||||
| -rwxr-xr-x | test/ng/compileSpec.js | 29 | 
3 files changed, 32 insertions, 2 deletions
| diff --git a/src/ng/compile.js b/src/ng/compile.js index 2dd0e6ea..4f466292 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -631,7 +631,7 @@ function $CompileProvider($provide) {                // support ngAttr attribute binding                ngAttrName = directiveNormalize(name);                if (NG_ATTR_BINDING.test(ngAttrName)) { -                name = ngAttrName.substr(6).toLowerCase(); +                name = snake_case(ngAttrName.substr(6), '-');                }                var directiveNName = ngAttrName.replace(/(Start|End)$/, ''); diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index e6e3a2ac..08100658 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -1366,6 +1366,7 @@ describe('jqLite', function() {       expect(camelCase('-moz-foo-bar')).toBe('MozFooBar');       expect(camelCase('-webkit-foo-bar')).toBe('webkitFooBar');       expect(camelCase('-webkit-foo-bar')).toBe('webkitFooBar'); -   }) +   });    }); +  }); diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 6b3a0479..1e66b49f 100755 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -3342,6 +3342,35 @@ describe('$compile', function() {        expect(element.attr('test3')).toBe('Misko');        expect(element.attr('test4')).toBe('Misko');      })); + +    describe('when an attribute has a dash-separated name', function () { + +      it('should work with different prefixes', inject(function($compile, $rootScope) { +        $rootScope.name = "JamieMason"; +        element = $compile('<span ng:attr:dash-test="{{name}}" ng-Attr-dash-test2="{{name}}" ng_Attr_dash-test3="{{name}}"></span>')($rootScope); +        expect(element.attr('dash-test')).toBeUndefined(); +        expect(element.attr('dash-test2')).toBeUndefined(); +        expect(element.attr('dash-test3')).toBeUndefined(); +        $rootScope.$digest(); +        expect(element.attr('dash-test')).toBe('JamieMason'); +        expect(element.attr('dash-test2')).toBe('JamieMason'); +        expect(element.attr('dash-test3')).toBe('JamieMason'); +      })); + +      it('should work if they are prefixed with x- or data-', inject(function($compile, $rootScope) { +        $rootScope.name = "JamieMason"; +        element = $compile('<span data-ng-attr-dash-test2="{{name}}" x-ng-attr-dash-test3="{{name}}" data-ng:attr-dash-test4="{{name}}"></span>')($rootScope); +        expect(element.attr('dash-test2')).toBeUndefined(); +        expect(element.attr('dash-test3')).toBeUndefined(); +        expect(element.attr('dash-test4')).toBeUndefined(); +        $rootScope.$digest(); +        expect(element.attr('dash-test2')).toBe('JamieMason'); +        expect(element.attr('dash-test3')).toBe('JamieMason'); +        expect(element.attr('dash-test4')).toBe('JamieMason'); +      })); + +    }); +    }); | 
