diff --git a/src/directive/input.js b/src/directive/input.js index adb8102caf8a..c9553e395424 100644 --- a/src/directive/input.js +++ b/src/directive/input.js @@ -560,6 +560,8 @@ function radioInputType(scope, element, attr, ctrl) { var value = attr.value; element[0].checked = isDefined(value) && (value == ctrl.$viewValue); }; + + attr.$observe('value', ctrl.$render); } function checkboxInputType(scope, element, attr, ctrl) { diff --git a/test/directive/inputSpec.js b/test/directive/inputSpec.js index 22c77f53aaae..0b848df154d2 100644 --- a/test/directive/inputSpec.js +++ b/test/directive/inputSpec.js @@ -720,18 +720,30 @@ describe('input', function() { }); - // TODO(vojta): change interpolate ? - xit('should allow {{expr}} as value', function() { + it('should allow {{expr}} as value', function() { scope.some = 11; compileInput( '' + ''); - browserTrigger(inputElm[0]); - expect(scope.value).toBe(true); + scope.$apply(function() { + scope.value = 'blue'; + scope.some = 'blue'; + scope.other = 'red'; + }); + + expect(inputElm[0].checked).toBe(true); + expect(inputElm[1].checked).toBe(false); browserTrigger(inputElm[1]); - expect(scope.value).toBe(false); + expect(scope.value).toBe('red'); + + scope.$apply(function() { + scope.other = 'non-red'; + }); + + expect(inputElm[0].checked).toBe(false); + expect(inputElm[1].checked).toBe(false); }); });