Skip to content

Commit 8d9c26d

Browse files
committed
更改initItemForUpdate方法
1 parent 07bac13 commit 8d9c26d

File tree

2 files changed

+39
-31
lines changed

2 files changed

+39
-31
lines changed

02.Components/Part-2/demo/step05.html

+29-24
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
* 由于IE不支持<template>标签,所以template标签中的内容在IE下会直接显示出来。
1111
* 将模板设为隐藏即可解决这个问题,template标签各浏览器支持请参考:http://caniuse.com/#feat=template
1212
*/
13-
#grid-template, #dialog-template{
13+
14+
#grid-template,
15+
#dialog-template {
1416
display: none;
1517
}
1618
</style>
@@ -75,7 +77,7 @@ <h1 class="dialog-title">{{ title }}</h1>
7577
<div v-for="field in fields" class="form-group">
7678
<label>{{ field.name }}</label>
7779
<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>
7981
</select>
8082
<input v-else type="text" v-model="item[field.name]" :disabled="mode === 2 && field.isKey">
8183
</div>
@@ -106,9 +108,9 @@ <h1 class="dialog-title">{{ title }}</h1>
106108
item: {}
107109
}
108110
},
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) {
112114
this.keyColumn = this.columns[i]['name']
113115
break;
114116
}
@@ -137,16 +139,19 @@ <h1 class="dialog-title">{{ title }}</h1>
137139
// 广播事件,传入参数true表示显示对话框
138140
this.$broadcast('showDialog', true)
139141
},
140-
141142
// 弹出修改数据的对话框时,使用对象的深拷贝
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) {
145146
// 属性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]是普通对象,则创建一个新对象
148152
c[i] = Array.isArray(p[i]) ? [] : {};
149-
deepCopy(p[i], c[i]);
153+
// 递归拷贝复杂类型的属性
154+
this.initItemForUpdate(p[i], c[i]);
150155
} else {
151156
// 属性是基础类型时,直接拷贝
152157
c[i] = p[i];
@@ -155,25 +160,25 @@ <h1 class="dialog-title">{{ title }}</h1>
155160
}
156161
return c;
157162
},
158-
findItemByKey: function(key){
163+
findItemByKey: function(key) {
159164
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) {
162167
return this.dataList[i]
163168
}
164169
}
165170
},
166171
itemExists: function() {
167172
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])
170175
return true;
171176
}
172177
return false;
173178
},
174179
createItem: function() {
175180
var keyColumn = this.keyColumn
176-
if (!this.itemExists()) {
181+
if(!this.itemExists()) {
177182
// 将item追加到dataList
178183
this.dataList.push(this.item)
179184
// 广播事件,传入参数false表示隐藏对话框
@@ -190,18 +195,18 @@ <h1 class="dialog-title">{{ title }}</h1>
190195
// 获取主键列
191196
var keyColumn = this.keyColumn
192197

193-
for (var i = 0; i < this.dataList.length; i++) {
198+
for(var i = 0; i < this.dataList.length; i++) {
194199
// 根据主键查找要修改的数据,然后将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) {
197202
this.dataList[i][j] = this.item[j]
198203
}
199204
break;
200205
}
201206
}
202207
// 广播事件,传入参数false表示隐藏对话框
203208
this.$broadcast('showDialog', false)
204-
// 修改完数据后,重置item对象
209+
// 修改完数据后,重置item对象
205210
this.item = {}
206211
},
207212
deleteItem: function(entry) {
@@ -235,10 +240,10 @@ <h1 class="dialog-title">{{ title }}</h1>
235240
this.show = false
236241
},
237242
save: function() {
238-
if (this.mode === 1) {
243+
if(this.mode === 1) {
239244
// 使用$dispatch调用simple-grid的create-item事件
240245
this.$dispatch('create-item')
241-
} else if (this.mode === 2) {
246+
} else if(this.mode === 2) {
242247
// 使用$dispatch调用simple-grid的update-item事件
243248
this.$dispatch('update-item')
244249
}

02.Components/Part-2/demo/step06.html

+10-7
Original file line numberDiff line numberDiff line change
@@ -174,16 +174,19 @@ <h1 class="dialog-title">{{ title }}</h1>
174174
// 广播事件,传入参数true表示显示对话框
175175
this.$broadcast('showDialog', true)
176176
},
177-
178177
// 弹出修改数据的对话框时,使用对象的深拷贝
179-
initItemForUpdate: function(p) {
180-
var c = c || {};
181-
for (var i in p) {
178+
initItemForUpdate(p, c) {
179+
c = c || {};
180+
for(var i in p) {
182181
// 属性i是否为p对象的自有属性
183-
if (p.hasOwnProperty(i)) {
184-
if (typeof p[i] === 'object') {
182+
if(p.hasOwnProperty(i)) {
183+
// 属性i是否为复杂类型
184+
if(typeof p[i] === 'object') {
185+
// 如果p[i]是数组,则创建一个新数组
186+
// 如果p[i]是普通对象,则创建一个新对象
185187
c[i] = Array.isArray(p[i]) ? [] : {};
186-
deepCopy(p[i], c[i]);
188+
// 递归拷贝复杂类型的属性
189+
this.initItemForUpdate(p[i], c[i]);
187190
} else {
188191
// 属性是基础类型时,直接拷贝
189192
c[i] = p[i];

0 commit comments

Comments
 (0)