@@ -5,7 +5,6 @@ import uuid from '@cocreate/uuid';
5
5
import { queryDocumentSelector , getValueFromObject , dotNotationToObject } from '@cocreate/utils' ;
6
6
import '@cocreate/element-prototype' ;
7
7
import './index.css' ;
8
- // import api from '@cocreate/api';
9
8
10
9
const CoCreateRender = {
11
10
@@ -98,7 +97,6 @@ const CoCreateRender = {
98
97
99
98
render : function ( template , data ) {
100
99
const self = this ;
101
- let type = '' ;
102
100
let arrayData = data ;
103
101
104
102
let exclude = template . getAttribute ( 'render-exclude' ) || ''
@@ -108,50 +106,42 @@ const CoCreateRender = {
108
106
exclude = [ exclude ]
109
107
}
110
108
111
- let isRenderObject = template . hasAttribute ( 'render-object' ) ;
112
- if ( isRenderObject ) {
113
- const renderObject = template . getAttribute ( 'render-object' ) ;
114
- type = renderObject || ''
115
- }
116
-
117
- const isRenderArray = template . hasAttribute ( 'render-array' ) ;
118
- if ( isRenderArray ) {
119
- var renderArray = template . getAttribute ( 'render-array' ) ;
120
- if ( renderArray )
121
- arrayData = data [ renderArray ] ;
122
- type = renderArray || '' ;
123
- }
124
-
125
- if ( ! isRenderArray && ! isRenderObject ) {
126
- if ( ! Array . isArray ( arrayData ) && typeof arrayData == 'object' )
127
- isRenderObject = true
109
+ let isRenderObject
110
+ let dataKey = template . getAttribute ( 'render' ) || ""
111
+ if ( dataKey ) {
112
+ arrayData = getValueFromObject ( data , dataKey ) ;
113
+ if ( ! Array . isArray ( arrayData ) ) {
114
+ if ( typeof arrayData === 'object' ) {
115
+ isRenderObject = true
116
+ } else {
117
+ console . log ( dataKey , 'value must be an objec or an array' )
118
+ }
119
+ }
128
120
}
129
121
130
- let renderKey = template . getAttribute ( 'render-key' ) || type ;
122
+ let renderKey = template . getAttribute ( 'render-key' ) || dataKey ;
131
123
132
124
if ( ! template . renderedKeys )
133
125
template . renderedKeys = new Map ( )
134
126
135
- if ( isRenderObject && type ) {
136
- let Data = getValueFromObject ( arrayData , type ) ;
137
- let array = self . renderObject ( Data , renderKey , exclude )
127
+ if ( isRenderObject && dataKey ) {
128
+ let array = self . renderObject ( arrayData , renderKey , exclude )
138
129
for ( let item of array ) {
139
130
if ( ! template . renderedKeys . has ( item [ renderKey ] . key ) ) {
140
131
template . renderedKeys . set ( item [ renderKey ] . key , '' )
141
132
let cloneEl = this . cloneEl ( template ) ;
142
133
cloneEl . setAttribute ( 'renderedKey' , item [ renderKey ] . key )
143
- self . setValue ( [ cloneEl ] , item , renderArray , renderKey ) ;
134
+ self . setValue ( [ cloneEl ] , item , dataKey , renderKey ) ;
144
135
template . insertAdjacentElement ( 'beforebegin' , cloneEl ) ;
145
136
}
146
137
}
147
138
} else {
148
-
149
139
if ( ! Array . isArray ( arrayData ) )
150
- arrayData = getValueFromObject ( data , type ) ;
140
+ arrayData = getValueFromObject ( data , dataKey ) ;
151
141
152
142
if ( ! arrayData ) {
153
143
let cloneEl = this . cloneEl ( template ) ;
154
- self . setValue ( [ cloneEl ] , data , renderArray , renderKey ) ;
144
+ self . setValue ( [ cloneEl ] , data , dataKey , renderKey ) ;
155
145
template . insertAdjacentElement ( 'beforebegin' , cloneEl ) ;
156
146
}
157
147
@@ -165,7 +155,7 @@ const CoCreateRender = {
165
155
166
156
let cloneEl = this . cloneEl ( template ) ;
167
157
let object = self . __createObject ( item , renderKey ) ;
168
- self . setValue ( [ cloneEl ] , object , renderArray , renderKey ) ;
158
+ self . setValue ( [ cloneEl ] , object , dataKey , renderKey ) ;
169
159
template . insertAdjacentElement ( 'beforebegin' , cloneEl ) ;
170
160
}
171
161
} ) ;
@@ -195,6 +185,16 @@ const CoCreateRender = {
195
185
cloneEl : function ( template ) {
196
186
let cloneEl = template . cloneNode ( true ) ;
197
187
188
+ if ( template . CoCreate )
189
+ cloneEl . CoCreate = template . CoCreate
190
+ else
191
+ cloneEl . CoCreate = { }
192
+
193
+ if ( cloneEl . CoCreate . render )
194
+ cloneEl . CoCreate . render . template = template
195
+ else
196
+ cloneEl . CoCreate . render = { template }
197
+
198
198
let templateId = cloneEl . getAttribute ( 'template_id' ) ;
199
199
if ( ! templateId )
200
200
templateId = cloneEl . getAttribute ( 'template' ) ;
0 commit comments