Skip to content

Commit cc5e4b5

Browse files
committed
fix: update and delete for loop data.type
1 parent 1921e57 commit cc5e4b5

File tree

1 file changed

+27
-24
lines changed

1 file changed

+27
-24
lines changed

src/index.js

+27-24
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ async function render({ source, element, data, key, index, currentIndex, update,
100100

101101
for (let i = 0; i < element.length; i++) {
102102
if (!key)
103-
key = element[i].getAttribute('render')
103+
key = element[i].getAttribute('render') || type
104104

105105
let renderedNode = renderedNodes.get(element[i])
106106
if (source) {
@@ -111,33 +111,36 @@ async function render({ source, element, data, key, index, currentIndex, update,
111111
}
112112

113113
if (remove) {
114-
let cloneKey
115-
if (type === 'object') {
116-
cloneKey = data[type][0]._id;
117-
} else {
118-
cloneKey = data[type][0].name;
119-
}
120-
121-
let clone = renderedNode.clones.get(cloneKey)
122-
if (!clone) return
123-
124-
renderedNode.clones.delete(cloneKey)
125-
renderedNodes.delete(clone)
126-
clone.remove()
127-
} else if (key || Array.isArray(data)) {
128-
if (update) {
129-
let clone
114+
for (let j = 0; j < data[type].length; j++) {
115+
let cloneKey
130116
if (type === 'object') {
131-
clone = renderedNode.clones.get(data[type][0]._id);
117+
cloneKey = data[type][j]._id;
132118
} else {
133-
clone = renderedNode.clones.get(data[type][0].name);
119+
cloneKey = data[type][j].name;
134120
}
135121

136-
if (!currentIndex)
137-
currentIndex = data.$filter.currentIndex
138-
122+
let clone = renderedNode.clones.get(cloneKey)
139123
if (!clone) return
124+
125+
renderedNode.clones.delete(cloneKey)
126+
renderedNodes.delete(clone)
127+
clone.remove()
128+
}
129+
} else if (key || Array.isArray(data)) {
130+
if (update) {
140131
for (let j = 0; j < data[type].length; j++) {
132+
let clone
133+
if (type === 'object') {
134+
clone = renderedNode.clones.get(data[type][j]._id);
135+
} else {
136+
clone = renderedNode.clones.get(data[type][j].name);
137+
}
138+
139+
if (!currentIndex)
140+
currentIndex = data.$filter.currentIndex
141+
142+
if (!clone) return
143+
141144
await renderValues(clone, { object: data[type][j] });
142145
if (currentIndex >= 0)
143146
insertElement(renderedNode, clone, index, currentIndex)
@@ -161,8 +164,8 @@ async function render({ source, element, data, key, index, currentIndex, update,
161164
}
162165

163166
async function renderTemplate(template, data, key, index, keyPath) {
164-
if (!key)
165-
key = template.getAttribute('render')
167+
// if (!key)
168+
// key = template.getAttribute('render')
166169

167170
let templateData = renderedNodes.get(template)
168171
if (!templateData) {

0 commit comments

Comments
 (0)