@@ -64,25 +64,19 @@ class RecordFactory extends Base {
6464 return this [ dataSymbol ] [ fieldName ]
6565 } ,
6666 set ( value ) {
67- let me = this ,
68- oldValue ;
69-
70- if ( model . hasNestedFields ) {
71- oldValue = Neo . ns ( fieldPath , false , me [ dataSymbol ] )
72- } else {
73- oldValue = me [ dataSymbol ] [ fieldName ]
74- }
67+ let me = this ,
68+ oldValue = me [ dataSymbol ] [ fieldName ] ;
7569
7670 value = instance . parseRecordValue ( me , field , value ) ;
7771
7872 if ( ! Neo . isEqual ( value , oldValue ) ) {
79- this [ dataSymbol ] [ fieldName ] = value ;
73+ instance . setRecordData ( fieldPath , model , me , value ) ;
8074
8175 me . _isModified = true ;
8276 me . _isModified = instance . isModified ( me , model . trackModifiedFields ) ;
8377
8478 instance . onRecordChange ( {
85- fields : [ { name : field . name , oldValue, value} ] ,
79+ fields : [ { name : fieldPath , oldValue, value} ] ,
8680 model,
8781 record : me
8882 } )
@@ -319,6 +313,27 @@ class RecordFactory extends Base {
319313 return value
320314 }
321315
316+ /**
317+ * @param {String } fieldName
318+ * @param {Neo.data.Model } model
319+ * @param {Record } record
320+ * @param {* } value
321+ * @protected
322+ */
323+ setRecordData ( fieldName , model , record , value ) {
324+ if ( model . hasNestedFields && fieldName . includes ( '.' ) ) {
325+ let ns , nsArray ;
326+
327+ nsArray = fieldName . split ( '.' ) ;
328+ fieldName = nsArray . pop ( ) ;
329+ ns = Neo . ns ( nsArray , true , record [ dataSymbol ] ) ;
330+
331+ ns [ fieldName ] = value
332+ } else {
333+ record [ dataSymbol ] [ fieldName ] = value
334+ }
335+ }
336+
322337 /**
323338 * @param {Neo.data.Model } model
324339 * @param {Object } record
@@ -327,8 +342,8 @@ class RecordFactory extends Base {
327342 * @param {Object[] } changedFields=[] Internal flag
328343 */
329344 setRecordFields ( model , record , fields , silent = false , changedFields = [ ] ) {
330- let { fieldsMap, hasNestedFields } = model ,
331- fieldExists , fieldName , ns , nsArray , oldValue ;
345+ let { fieldsMap} = model ,
346+ fieldExists , oldValue ;
332347
333348 Object . entries ( fields ) . forEach ( ( [ key , value ] ) => {
334349 fieldExists = fieldsMap . has ( key ) ;
@@ -342,15 +357,7 @@ class RecordFactory extends Base {
342357 value = instance . parseRecordValue ( record , model . getField ( key ) , value ) ;
343358
344359 if ( ! Neo . isEqual ( oldValue , value ) ) {
345- if ( hasNestedFields && key . includes ( '.' ) ) {
346- nsArray = key . split ( '.' ) ;
347- fieldName = nsArray . pop ( ) ;
348- ns = Neo . ns ( nsArray , true , record [ dataSymbol ] ) ;
349-
350- ns [ fieldName ] = value
351- } else {
352- record [ dataSymbol ] [ key ] = value
353- }
360+ instance . setRecordData ( key , model , record , value ) ;
354361
355362 record . _isModified = true ;
356363 changedFields . push ( { name : key , oldValue, value} )
0 commit comments