Skip to content
This repository was archived by the owner on May 29, 2019. It is now read-only.

Commit e8c5b54

Browse files
feat(buttons): support dynamic values in btn-radio
1 parent 9c62409 commit e8c5b54

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

src/buttons/buttons.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,9 @@ angular.module('ui.bootstrap.buttons', [])
1414
require:'ngModel',
1515
link:function (scope, element, attrs, ngModelCtrl) {
1616

17-
var value = scope.$eval(attrs.btnRadio);
18-
1917
//model -> UI
2018
ngModelCtrl.$render = function () {
21-
if (angular.equals(ngModelCtrl.$modelValue, value)){
19+
if (angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.btnRadio))){
2220
element.addClass(activeClass);
2321
} else {
2422
element.removeClass(activeClass);
@@ -29,7 +27,7 @@ angular.module('ui.bootstrap.buttons', [])
2927
element.bind(toggleEvent, function () {
3028
if (!element.hasClass(activeClass)) {
3129
scope.$apply(function () {
32-
ngModelCtrl.$setViewValue(value);
30+
ngModelCtrl.$setViewValue(scope.$eval(attrs.btnRadio));
3331
ngModelCtrl.$render();
3432
});
3533
}

src/buttons/test/buttons.spec.js

+19
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,24 @@ describe('buttons', function () {
100100
expect(btns.eq(1)).toHaveClass('active');
101101
expect(btns.eq(0)).not.toHaveClass('active');
102102
});
103+
104+
it('should watch btn-radio values and update state accordingly', function () {
105+
$scope.values = ["value1", "value2"];
106+
107+
var btns = compileButtons('<button ng-model="model" btn-radio="values[0]">click1</button><button ng-model="model" btn-radio="values[1]">click2</button>', $scope);
108+
expect(btns.eq(0)).not.toHaveClass('active');
109+
expect(btns.eq(1)).not.toHaveClass('active');
110+
111+
$scope.model = "value2";
112+
$scope.$digest();
113+
expect(btns.eq(0)).not.toHaveClass('active');
114+
expect(btns.eq(1)).toHaveClass('active');
115+
116+
$scope.values[1] = "value3";
117+
$scope.model = "value3";
118+
$scope.$digest();
119+
expect(btns.eq(0)).not.toHaveClass('active');
120+
expect(btns.eq(1)).toHaveClass('active');
121+
});
103122
});
104123
});

0 commit comments

Comments
 (0)