File tree Expand file tree Collapse file tree 2 files changed +38
-4
lines changed
test/unit/specs/directives Expand file tree Collapse file tree 2 files changed +38
-4
lines changed Original file line number Diff line number Diff line change @@ -6,11 +6,17 @@ module.exports = {
6
6
var self = this
7
7
var el = this . el
8
8
var number = this . _checkParam ( 'number' ) != null
9
+ var expression = this . _checkParam ( 'exp' )
9
10
function getValue ( ) {
10
- return number
11
- ? _ . toNumber ( el . value )
12
- : el . value
11
+ var val = el . value
12
+ if ( number ) {
13
+ val = _ . toNumber ( val )
14
+ } else if ( expression !== null ) {
15
+ val = self . vm . $eval ( expression )
16
+ }
17
+ return val
13
18
}
19
+ this . _getValue = getValue ;
14
20
this . listener = function ( ) {
15
21
self . set ( getValue ( ) )
16
22
}
@@ -22,7 +28,7 @@ module.exports = {
22
28
23
29
update : function ( value ) {
24
30
/* eslint-disable eqeqeq */
25
- this . el . checked = value == this . el . value
31
+ this . el . checked = value == this . _getValue ( )
26
32
/* eslint-enable eqeqeq */
27
33
} ,
28
34
Original file line number Diff line number Diff line change @@ -80,6 +80,34 @@ if (_.inBrowser) {
80
80
expect ( vm . test ) . toBe ( 'a' )
81
81
} )
82
82
83
+ fit ( 'radio expression' , function ( done ) {
84
+ var vm = new Vue ( {
85
+ el : el ,
86
+ data : {
87
+ test : false ,
88
+ test2 : 'string1' ,
89
+ expression1 : 'string1' ,
90
+ expression2 : 'string2'
91
+ } ,
92
+ template :
93
+ '<input type="radio" value="1" v-model="test" name="test" exp="true">' +
94
+ '<input type="radio" value="0" v-model="test" name="test" exp="false">' +
95
+ '<input type="radio" value="1" v-model="test2" name="test2" exp="expression1">' +
96
+ '<input type="radio" value="0" v-model="test2" name="test2" exp="expression2">'
97
+ } )
98
+ expect ( el . childNodes [ 0 ] . checked ) . toBe ( false )
99
+ expect ( el . childNodes [ 1 ] . checked ) . toBe ( true )
100
+ expect ( el . childNodes [ 2 ] . checked ) . toBe ( true )
101
+ expect ( el . childNodes [ 3 ] . checked ) . toBe ( false )
102
+ _ . nextTick ( function ( ) {
103
+ el . childNodes [ 0 ] . click ( )
104
+ expect ( vm . test ) . toBe ( true )
105
+ el . childNodes [ 3 ] . click ( )
106
+ expect ( vm . test2 ) . toBe ( 'string2' )
107
+ done ( )
108
+ } )
109
+ } )
110
+
83
111
it ( 'checkbox' , function ( done ) {
84
112
var vm = new Vue ( {
85
113
el : el ,
You can’t perform that action at this time.
0 commit comments