@@ -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
163166async 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