@@ -5,22 +5,26 @@ angular.module('ui.bootstrap.buttons', [])
5
5
toggleEvent : 'click'
6
6
} )
7
7
8
- . directive ( 'btnRadio' , [ 'buttonConfig' , function ( buttonConfig ) {
9
- var activeClass = buttonConfig . activeClass || 'active' ;
10
- var toggleEvent = buttonConfig . toggleEvent || 'click' ;
8
+ . controller ( 'ButtonsController' , [ 'buttonConfig' , function ( buttonConfig ) {
9
+ this . activeClass = buttonConfig . activeClass || 'active' ;
10
+ this . toggleEvent = buttonConfig . toggleEvent || 'click' ;
11
+ } ] )
11
12
13
+ . directive ( 'btnRadio' , function ( ) {
12
14
return {
13
- require : 'ngModel' ,
14
- link : function ( scope , element , attrs , ngModelCtrl ) {
15
+ require : [ 'btnRadio' , 'ngModel' ] ,
16
+ controller : 'ButtonsController' ,
17
+ link : function ( scope , element , attrs , ctrls ) {
18
+ var buttonsCtrl = ctrls [ 0 ] , ngModelCtrl = ctrls [ 1 ] ;
15
19
16
20
//model -> UI
17
21
ngModelCtrl . $render = function ( ) {
18
- element . toggleClass ( activeClass , angular . equals ( ngModelCtrl . $modelValue , scope . $eval ( attrs . btnRadio ) ) ) ;
22
+ element . toggleClass ( buttonsCtrl . activeClass , angular . equals ( ngModelCtrl . $modelValue , scope . $eval ( attrs . btnRadio ) ) ) ;
19
23
} ;
20
24
21
25
//ui->model
22
- element . bind ( toggleEvent , function ( ) {
23
- if ( ! element . hasClass ( activeClass ) ) {
26
+ element . bind ( buttonsCtrl . toggleEvent , function ( ) {
27
+ if ( ! element . hasClass ( buttonsCtrl . activeClass ) ) {
24
28
scope . $apply ( function ( ) {
25
29
ngModelCtrl . $setViewValue ( scope . $eval ( attrs . btnRadio ) ) ;
26
30
ngModelCtrl . $render ( ) ;
@@ -29,38 +33,40 @@ angular.module('ui.bootstrap.buttons', [])
29
33
} ) ;
30
34
}
31
35
} ;
32
- } ] )
33
-
34
- . directive ( 'btnCheckbox' , [ 'buttonConfig' , function ( buttonConfig ) {
35
- var activeClass = buttonConfig . activeClass || 'active' ;
36
- var toggleEvent = buttonConfig . toggleEvent || 'click' ;
36
+ } )
37
37
38
+ . directive ( 'btnCheckbox' , function ( ) {
38
39
return {
39
- require : 'ngModel' ,
40
- link : function ( scope , element , attrs , ngModelCtrl ) {
40
+ require : [ 'btnCheckbox' , 'ngModel' ] ,
41
+ controller : 'ButtonsController' ,
42
+ link : function ( scope , element , attrs , ctrls ) {
43
+ var buttonsCtrl = ctrls [ 0 ] , ngModelCtrl = ctrls [ 1 ] ;
41
44
42
45
function getTrueValue ( ) {
43
- var trueValue = scope . $eval ( attrs . btnCheckboxTrue ) ;
44
- return angular . isDefined ( trueValue ) ? trueValue : true ;
46
+ return getCheckboxValue ( attrs . btnCheckboxTrue , true ) ;
45
47
}
46
48
47
49
function getFalseValue ( ) {
48
- var falseValue = scope . $eval ( attrs . btnCheckboxFalse ) ;
49
- return angular . isDefined ( falseValue ) ? falseValue : false ;
50
+ return getCheckboxValue ( attrs . btnCheckboxFalse , false ) ;
51
+ }
52
+
53
+ function getCheckboxValue ( attributeValue , defaultValue ) {
54
+ var val = scope . $eval ( attributeValue ) ;
55
+ return angular . isDefined ( val ) ? val : defaultValue ;
50
56
}
51
57
52
58
//model -> UI
53
59
ngModelCtrl . $render = function ( ) {
54
- element . toggleClass ( activeClass , angular . equals ( ngModelCtrl . $modelValue , getTrueValue ( ) ) ) ;
60
+ element . toggleClass ( buttonsCtrl . activeClass , angular . equals ( ngModelCtrl . $modelValue , getTrueValue ( ) ) ) ;
55
61
} ;
56
62
57
63
//ui->model
58
- element . bind ( toggleEvent , function ( ) {
64
+ element . bind ( buttonsCtrl . toggleEvent , function ( ) {
59
65
scope . $apply ( function ( ) {
60
- ngModelCtrl . $setViewValue ( element . hasClass ( activeClass ) ? getFalseValue ( ) : getTrueValue ( ) ) ;
66
+ ngModelCtrl . $setViewValue ( element . hasClass ( buttonsCtrl . activeClass ) ? getFalseValue ( ) : getTrueValue ( ) ) ;
61
67
ngModelCtrl . $render ( ) ;
62
68
} ) ;
63
69
} ) ;
64
70
}
65
71
} ;
66
- } ] ) ;
72
+ } ) ;
0 commit comments