@@ -306,19 +306,24 @@ async function renderTemplate(template, data, key, index, keyPath) {
306
306
renderReverse = template . element . getAttribute ( "render-reverse" ) ;
307
307
}
308
308
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
+
309
315
if ( ( key && ! Array . isArray ( renderData ) ) || renderType === "object" ) {
310
316
if ( renderType && Array . isArray ( renderData ) && renderData . length === 1 )
311
317
renderData = renderData [ 0 ] ;
312
318
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
-
319
319
const keys = Object . keys ( renderData ) ;
320
320
for ( let i = 0 ; i < keys . length ; i ++ ) {
321
321
if ( exclude . includes ( keys [ i ] ) ) continue ;
322
+ if (
323
+ reference === "false" &&
324
+ [ "$storage" , "$database" , "$array" ] . includes ( key )
325
+ )
326
+ continue ;
322
327
323
328
let value = renderData [ keys [ i ] ] ;
324
329
let type = "string" ;
@@ -364,12 +369,21 @@ async function renderTemplate(template, data, key, index, keyPath) {
364
369
365
370
clone . keyPath = template . keyPath || "" + `[${ i } ]` ;
366
371
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
+
368
382
if ( renderAs ) {
369
- object = { [ renderAs ] : renderData [ i ] } ;
383
+ object = { [ renderAs ] : object } ;
370
384
if ( renderAs . includes ( "." ) )
371
385
object = dotNotationToObject ( object ) ;
372
- } else object = renderData [ i ] ;
386
+ } else object = object ;
373
387
374
388
let index ;
375
389
if ( key !== "data" ) index = i ;
@@ -1018,7 +1032,7 @@ Actions.init({
1018
1032
let array = action . form . getAttribute ( "array" ) ;
1019
1033
if ( array ) data = data . find ( ( obj ) => obj . array === array ) ;
1020
1034
for ( let i = 0 ; i < elements . length ; i ++ )
1021
- render ( { source : elements [ i ] , data } ) ;
1035
+ await render ( { source : elements [ i ] , data } ) ;
1022
1036
1023
1037
document . dispatchEvent (
1024
1038
new CustomEvent ( "render" , {
0 commit comments