This repository was archived by the owner on May 29, 2019. It is now read-only.
File tree 2 files changed +27
-6
lines changed
2 files changed +27
-6
lines changed Original file line number Diff line number Diff line change @@ -41,21 +41,25 @@ angular.module('ui.bootstrap.buttons', [])
41
41
require :'ngModel' ,
42
42
link :function ( scope , element , attrs , ngModelCtrl ) {
43
43
44
- var trueValue = scope . $eval ( attrs . btnCheckboxTrue ) ;
45
- var falseValue = scope . $eval ( attrs . btnCheckboxFalse ) ;
44
+ function getTrueValue ( ) {
45
+ var trueValue = scope . $eval ( attrs . btnCheckboxTrue ) ;
46
+ return angular . isDefined ( trueValue ) ? trueValue : true ;
47
+ }
46
48
47
- trueValue = angular . isDefined ( trueValue ) ? trueValue : true ;
48
- falseValue = angular . isDefined ( falseValue ) ? falseValue : false ;
49
+ function getFalseValue ( ) {
50
+ var falseValue = scope . $eval ( attrs . btnCheckboxFalse ) ;
51
+ return angular . isDefined ( falseValue ) ? falseValue : false ;
52
+ }
49
53
50
54
//model -> UI
51
55
ngModelCtrl . $render = function ( ) {
52
- element . toggleClass ( activeClass , angular . equals ( ngModelCtrl . $modelValue , trueValue ) ) ;
56
+ element . toggleClass ( activeClass , angular . equals ( ngModelCtrl . $modelValue , getTrueValue ( ) ) ) ;
53
57
} ;
54
58
55
59
//ui->model
56
60
element . bind ( toggleEvent , function ( ) {
57
61
scope . $apply ( function ( ) {
58
- ngModelCtrl . $setViewValue ( element . hasClass ( activeClass ) ? falseValue : trueValue ) ;
62
+ ngModelCtrl . $setViewValue ( element . hasClass ( activeClass ) ? getFalseValue ( ) : getTrueValue ( ) ) ;
59
63
ngModelCtrl . $render ( ) ;
60
64
} ) ;
61
65
} ) ;
Original file line number Diff line number Diff line change @@ -63,6 +63,23 @@ describe('buttons', function () {
63
63
expect ( $scope . model ) . toEqual ( 0 ) ;
64
64
expect ( btn ) . not . toHaveClass ( 'active' ) ;
65
65
} ) ;
66
+
67
+ it ( 'should monitor true / false value changes - issue 666' , function ( ) {
68
+
69
+ $scope . model = 1 ;
70
+ $scope . trueVal = 1 ;
71
+ var btn = compileButton ( '<button ng-model="model" btn-checkbox btn-checkbox-true="trueVal">click</button>' , $scope ) ;
72
+
73
+ expect ( btn ) . toHaveClass ( 'active' ) ;
74
+ expect ( $scope . model ) . toEqual ( 1 ) ;
75
+
76
+ $scope . model = 2 ;
77
+ $scope . trueVal = 2 ;
78
+ $scope . $digest ( ) ;
79
+
80
+ expect ( btn ) . toHaveClass ( 'active' ) ;
81
+ expect ( $scope . model ) . toEqual ( 2 ) ;
82
+ } ) ;
66
83
} ) ;
67
84
68
85
describe ( 'radio' , function ( ) {
You can’t perform that action at this time.
0 commit comments