@@ -1362,9 +1362,9 @@ ko.expressionRewriting = (() => {
1362
1362
divisionLookBehind = / [ \] ) " ' A - Z a - z 0 - 9 _ $ ] + $ / ,
1363
1363
keywordRegexLookBehind = { 'in' :1 , 'return' :1 , 'typeof' :1 } ,
1364
1364
1365
- parseObjectLiteral = objectLiteralString => {
1365
+ preProcessBindings = bindingsStringOrKeyValueArray => {
1366
1366
// Trim leading and trailing spaces from the string
1367
- var str = ko . utils . stringTrim ( objectLiteralString ) ;
1367
+ var str = ko . utils . stringTrim ( bindingsStringOrKeyValueArray ) ;
1368
1368
1369
1369
// Trim braces '{' surrounding the whole object literal
1370
1370
if ( str . charCodeAt ( 0 ) === 123 ) str = str . slice ( 1 , - 1 ) ;
@@ -1383,9 +1383,10 @@ ko.expressionRewriting = (() => {
1383
1383
// A comma signals the end of a key/value pair if depth is zero
1384
1384
if ( c === 44 ) { // ","
1385
1385
if ( depth <= 0 ) {
1386
- result . push ( ( key && values . length )
1387
- ? { key : key , value : values . join ( '' ) }
1388
- : { 'unknown' : key || values . join ( '' ) } ) ;
1386
+ if ( key && values . length ) {
1387
+ // Values are wrapped in a function so that each value can be accessed independently
1388
+ result . push ( "'" + key + "':()=>(" + values . join ( '' ) + ")" ) ;
1389
+ }
1389
1390
key = depth = 0 ;
1390
1391
values = [ ] ;
1391
1392
continue ;
@@ -1426,34 +1427,13 @@ ko.expressionRewriting = (() => {
1426
1427
throw Error ( "Unbalanced parentheses, braces, or brackets" ) ;
1427
1428
}
1428
1429
}
1429
- return result ;
1430
- } ,
1431
-
1432
- preProcessBindings = ( bindingsStringOrKeyValueArray ) => {
1433
1430
1434
- var resultStrings = [ ] ,
1435
- // propertyAccessorResultStrings = [],
1436
- keyValueArray = parseObjectLiteral ( bindingsStringOrKeyValueArray ) ,
1437
-
1438
- processKeyValue = ( key , val ) => {
1439
- // Values are wrapped in a function so that each value can be accessed independently
1440
- val = 'function(){return ' + val + ' }' ;
1441
- resultStrings . push ( "'" + key + "':" + val ) ;
1442
- } ;
1431
+ result . push ( "'$data':()=>$data" ) ;
1443
1432
1444
- keyValueArray . forEach ( keyValue =>
1445
- processKeyValue ( keyValue . key || keyValue [ 'unknown' ] , keyValue . value )
1446
- ) ;
1447
- /*
1448
- if (propertyAccessorResultStrings.length)
1449
- processKeyValue('_ko_property_writers', "{" + propertyAccessorResultStrings.join(",") + " }");
1450
- */
1451
- return resultStrings . join ( "," ) ;
1433
+ return result . join ( "," ) ;
1452
1434
} ;
1453
1435
1454
1436
return {
1455
- parseObjectLiteral : parseObjectLiteral ,
1456
-
1457
1437
preProcessBindings : preProcessBindings ,
1458
1438
1459
1439
keyValueArrayContainsKey : ( keyValueArray , key ) =>
@@ -1471,8 +1451,9 @@ ko.expressionRewriting = (() => {
1471
1451
// it is !== existing value on that writable observable
1472
1452
writeValueToProperty : ( element , property , allBindings , key , value , checkIfDifferent ) => {
1473
1453
if ( ! property || ! ko . isObservable ( property ) ) {
1474
- throw Error ( `"${ key } " must be observable for ${ element . outerHTML . replace ( / > .+ / , '>' ) } ` ) ;
1475
- // allBindings.get('_ko_property_writers')?.[key]?.(value);
1454
+ console . error ( `"${ key } " should be observable in ${ element . outerHTML . replace ( / > .+ / , '>' ) } ` ) ;
1455
+ // ko.dataFor(element).key = value;
1456
+ allBindings . get ( '$data' ) [ key ] = value ;
1476
1457
} else if ( ko . isWriteableObservable ( property ) && ( ! checkIfDifferent || property . peek ( ) !== value ) ) {
1477
1458
property ( value ) ;
1478
1459
}
0 commit comments