Estoy tratando de actualizar una etiqueta div con nuevos metadatos en un archivo y estoy usando la función de reemplazo para hacer este trabajo, pero no funciona como se esperaba, está agregando una etiqueta basura en el medio.
Estoy intentando este código a continuación.
let str = `<div data-bind="style:{'background-color':typeof(CalEventBgColor)!=='undefined'? CalEventBgColor:''},css:typeof(CalEventType)!=='undefined'? 'event '+ CalEventType:'event',attr:{ title:dynamicTitle ,id: CalEventId+'$'+$parentContext.$index()+'$'+$index()+$parents[1].componentid}" role="button" tabindex="0"> </div>`; let oldVal = `<div data-bind="style:{'background-color':typeof(CalEventBgColor)!=='undefined'? CalEventBgColor:''},css:typeof(CalEventType)!=='undefined'? 'event '+ CalEventType:'event',attr:{ title:dynamicTitle ,id: CalEventId+'$'+$parentContext.$index()+'$'+$index()+$parents[1].componentid}" role="button" tabindex="0">`; let newVal =`<div :class="[[typeof(CalEventType)!=='undefined'? 'event '+ CalEventType:'event']]" :title="[[dynamicTitle]]" :id="[[CalEventId+'$'+$parentContext.$index()+'$'+$index()+$parents[1].componentid]]" :style="[[{ 'background-color':typeof(CalEventBgColor)!=='undefined'? CalEventBgColor:''}]]" role="button" tabindex="0">`; console.log(str.replace(oldVal,newVal));Básicamente, si ve que la propiedad :id está rota con un carácter basura, hágame saber si podemos hacer algo al respecto.
Ocurre porque $ se usa para reemplazar la subcadena: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#description
Solo tienes que agregar un signo de dólar más antes de cada dólar. Esta cadena CalEventId+'$'+$parentContext.$index()+'$'+$index() debería verse así CalEventId+'$$'+$$parentContext.$$index()+'$$'+$index()