@@ -306,19 +306,24 @@ async function renderTemplate(template, data, key, index, keyPath) {
306306 renderReverse = template . element . getAttribute ( "render-reverse" ) ;
307307 }
308308
309+ let exclude = template . element . getAttribute ( "render-exclude" ) || "" ;
310+ if ( exclude ) {
311+ exclude = exclude . replace ( / / g, "" ) . split ( "," ) ;
312+ }
313+ let reference = template . element . getAttribute ( "render-reference" ) ;
314+
309315 if ( ( key && ! Array . isArray ( renderData ) ) || renderType === "object" ) {
310316 if ( renderType && Array . isArray ( renderData ) && renderData . length === 1 )
311317 renderData = renderData [ 0 ] ;
312318
313- let exclude = template . element . getAttribute ( "render-exclude" ) || "" ;
314- if ( exclude ) {
315- exclude = exclude . replace ( / / g, "" ) . split ( "," ) ;
316- if ( ! Array . isArray ( exclude ) ) exclude = [ exclude ] ;
317- }
318-
319319 const keys = Object . keys ( renderData ) ;
320320 for ( let i = 0 ; i < keys . length ; i ++ ) {
321321 if ( exclude . includes ( keys [ i ] ) ) continue ;
322+ if (
323+ reference === "false" &&
324+ [ "$storage" , "$database" , "$array" ] . includes ( key )
325+ )
326+ continue ;
322327
323328 let value = renderData [ keys [ i ] ] ;
324329 let type = "string" ;
@@ -364,12 +369,21 @@ async function renderTemplate(template, data, key, index, keyPath) {
364369
365370 clone . keyPath = template . keyPath || "" + `[${ i } ]` ;
366371
367- let object ;
372+ let object = { ...renderData [ i ] } ;
373+ for ( let j = 0 ; j < exclude . length ; j ++ )
374+ delete object [ exclude [ j ] ] ;
375+
376+ if ( reference === "false" ) {
377+ delete object . $storage ;
378+ delete object . $database ;
379+ delete object . $array ;
380+ }
381+
368382 if ( renderAs ) {
369- object = { [ renderAs ] : renderData [ i ] } ;
383+ object = { [ renderAs ] : object } ;
370384 if ( renderAs . includes ( "." ) )
371385 object = dotNotationToObject ( object ) ;
372- } else object = renderData [ i ] ;
386+ } else object = object ;
373387
374388 let index ;
375389 if ( key !== "data" ) index = i ;
@@ -1018,7 +1032,7 @@ Actions.init({
10181032 let array = action . form . getAttribute ( "array" ) ;
10191033 if ( array ) data = data . find ( ( obj ) => obj . array === array ) ;
10201034 for ( let i = 0 ; i < elements . length ; i ++ )
1021- render ( { source : elements [ i ] , data } ) ;
1035+ await render ( { source : elements [ i ] , data } ) ;
10221036
10231037 document . dispatchEvent (
10241038 new CustomEvent ( "render" , {
0 commit comments