@@ -306,19 +306,24 @@ async function renderTemplate(template, data, key, index, keyPath) {
306306renderReverse = 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+
309315if ( ( key && ! Array . isArray ( renderData ) ) || renderType === "object" ) {
310316if ( renderType && Array . isArray ( renderData ) && renderData . length === 1 )
311317renderData = 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-
319319const keys = Object . keys ( renderData ) ;
320320for ( let i = 0 ; i < keys . length ; i ++ ) {
321321if ( exclude . includes ( keys [ i ] ) ) continue ;
322+ if (
323+ reference === "false" &&
324+ [ "$storage" , "$database" , "$array" ] . includes ( key )
325+ )
326+ continue ;
322327
323328let value = renderData [ keys [ i ] ] ;
324329let type = "string" ;
@@ -364,12 +369,21 @@ async function renderTemplate(template, data, key, index, keyPath) {
364369
365370clone . 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+
368382if ( renderAs ) {
369- object = { [ renderAs ] : renderData [ i ] } ;
383+ object = { [ renderAs ] : object } ;
370384if ( renderAs . includes ( "." ) )
371385object = dotNotationToObject ( object ) ;
372- } else object = renderData [ i ] ;
386+ } else object = object ;
373387
374388let index ;
375389if ( key !== "data" ) index = i ;
@@ -1018,7 +1032,7 @@ Actions.init({
10181032let array = action . form . getAttribute ( "array" ) ;
10191033if ( array ) data = data . find ( ( obj ) => obj . array === array ) ;
10201034for ( let i = 0 ; i < elements . length ; i ++ )
1021- render ( { source : elements [ i ] , data } ) ;
1035+ await render ( { source : elements [ i ] , data } ) ;
10221036
10231037document . dispatchEvent (
10241038new CustomEvent ( "render" , {
0 commit comments