10
10
* 由于IE不支持<template>标签,所以template标签中的内容在IE下会直接显示出来。
11
11
* 将模板设为隐藏即可解决这个问题,template标签各浏览器支持请参考:http://caniuse.com/#feat=template
12
12
*/
13
- # grid-template , # dialog-template {
13
+
14
+ # grid-template ,
15
+ # dialog-template {
14
16
display : none;
15
17
}
16
18
</ style >
@@ -75,7 +77,7 @@ <h1 class="dialog-title">{{ title }}</h1>
75
77
< div v-for ="field in fields " class ="form-group ">
76
78
< label > {{ field.name }}</ label >
77
79
< select v-if ="field.dataSource " v-model ="item[field.name] " :disabled ="mode === 2 && field.isKey ">
78
- < option v-for ="opt in field.dataSource " :value ="opt "> {{ opt }}</ option >
80
+ < option v-for ="opt in field.dataSource " :value ="opt "> {{ opt }}</ option >
79
81
</ select >
80
82
< input v-else type ="text " v-model ="item[field.name] " :disabled ="mode === 2 && field.isKey ">
81
83
</ div >
@@ -106,9 +108,9 @@ <h1 class="dialog-title">{{ title }}</h1>
106
108
item : { }
107
109
}
108
110
} ,
109
- ready : function ( ) {
110
- for ( var i = 0 ; i < this . columns . length ; i ++ ) {
111
- if ( this . columns [ i ] . isKey ) {
111
+ ready : function ( ) {
112
+ for ( var i = 0 ; i < this . columns . length ; i ++ ) {
113
+ if ( this . columns [ i ] . isKey ) {
112
114
this . keyColumn = this . columns [ i ] [ 'name' ]
113
115
break ;
114
116
}
@@ -137,16 +139,19 @@ <h1 class="dialog-title">{{ title }}</h1>
137
139
// 广播事件,传入参数true表示显示对话框
138
140
this . $broadcast ( 'showDialog' , true )
139
141
} ,
140
-
141
142
// 弹出修改数据的对话框时,使用对象的深拷贝
142
- initItemForUpdate : function ( p ) {
143
- var c = c || { } ;
144
- for ( var i in p ) {
143
+ initItemForUpdate ( p , c ) {
144
+ c = c || { } ;
145
+ for ( var i in p ) {
145
146
// 属性i是否为p对象的自有属性
146
- if ( p . hasOwnProperty ( i ) ) {
147
- if ( typeof p [ i ] === 'object' ) {
147
+ if ( p . hasOwnProperty ( i ) ) {
148
+ // 属性i是否为复杂类型
149
+ if ( typeof p [ i ] === 'object' ) {
150
+ // 如果p[i]是数组,则创建一个新数组
151
+ // 如果p[i]是普通对象,则创建一个新对象
148
152
c [ i ] = Array . isArray ( p [ i ] ) ? [ ] : { } ;
149
- deepCopy ( p [ i ] , c [ i ] ) ;
153
+ // 递归拷贝复杂类型的属性
154
+ this . initItemForUpdate ( p [ i ] , c [ i ] ) ;
150
155
} else {
151
156
// 属性是基础类型时,直接拷贝
152
157
c [ i ] = p [ i ] ;
@@ -155,25 +160,25 @@ <h1 class="dialog-title">{{ title }}</h1>
155
160
}
156
161
return c ;
157
162
} ,
158
- findItemByKey : function ( key ) {
163
+ findItemByKey : function ( key ) {
159
164
var keyColumn = this . keyColumn
160
- for ( var i = 0 ; i < this . dataList . length ; i ++ ) {
161
- if ( this . dataList [ i ] [ keyColumn ] === key ) {
165
+ for ( var i = 0 ; i < this . dataList . length ; i ++ ) {
166
+ if ( this . dataList [ i ] [ keyColumn ] === key ) {
162
167
return this . dataList [ i ]
163
168
}
164
169
}
165
170
} ,
166
171
itemExists : function ( ) {
167
172
var keyColumn = this . keyColumn
168
- for ( var i = 0 ; i < this . dataList . length ; i ++ ) {
169
- if ( this . item [ keyColumn ] === this . dataList [ i ] [ keyColumn ] )
173
+ for ( var i = 0 ; i < this . dataList . length ; i ++ ) {
174
+ if ( this . item [ keyColumn ] === this . dataList [ i ] [ keyColumn ] )
170
175
return true ;
171
176
}
172
177
return false ;
173
178
} ,
174
179
createItem : function ( ) {
175
180
var keyColumn = this . keyColumn
176
- if ( ! this . itemExists ( ) ) {
181
+ if ( ! this . itemExists ( ) ) {
177
182
// 将item追加到dataList
178
183
this . dataList . push ( this . item )
179
184
// 广播事件,传入参数false表示隐藏对话框
@@ -190,18 +195,18 @@ <h1 class="dialog-title">{{ title }}</h1>
190
195
// 获取主键列
191
196
var keyColumn = this . keyColumn
192
197
193
- for ( var i = 0 ; i < this . dataList . length ; i ++ ) {
198
+ for ( var i = 0 ; i < this . dataList . length ; i ++ ) {
194
199
// 根据主键查找要修改的数据,然后将this.item数据更新到this.dataList[i]
195
- if ( this . dataList [ i ] [ keyColumn ] === this . item [ keyColumn ] ) {
196
- for ( var j in this . item ) {
200
+ if ( this . dataList [ i ] [ keyColumn ] === this . item [ keyColumn ] ) {
201
+ for ( var j in this . item ) {
197
202
this . dataList [ i ] [ j ] = this . item [ j ]
198
203
}
199
204
break ;
200
205
}
201
206
}
202
207
// 广播事件,传入参数false表示隐藏对话框
203
208
this . $broadcast ( 'showDialog' , false )
204
- // 修改完数据后,重置item对象
209
+ // 修改完数据后,重置item对象
205
210
this . item = { }
206
211
} ,
207
212
deleteItem : function ( entry ) {
@@ -235,10 +240,10 @@ <h1 class="dialog-title">{{ title }}</h1>
235
240
this . show = false
236
241
} ,
237
242
save : function ( ) {
238
- if ( this . mode === 1 ) {
243
+ if ( this . mode === 1 ) {
239
244
// 使用$dispatch调用simple-grid的create-item事件
240
245
this . $dispatch ( 'create-item' )
241
- } else if ( this . mode === 2 ) {
246
+ } else if ( this . mode === 2 ) {
242
247
// 使用$dispatch调用simple-grid的update-item事件
243
248
this . $dispatch ( 'update-item' )
244
249
}
0 commit comments