Я пытаюсь найти способ изменить значения в объекте JSON с динамическим именем.
Например, мой измененный объект в шаблоне теперь выглядит так:
var optionsPrice_<?php echo $_product->getId() ?> = new Product.OptionsPrice(<?php echo $this->getJsonConfig() ?>);
Я должен сделать эту переменную уникальной, так как на странице есть несколько продуктов, и нам нужно настроить таргетинг на каждый из них в отдельности.
Этот объект затем изменяется внутри функции с помощью:
optionsPrice.changePrice('config', {'price': price, 'oldPrice': oldPrice});
Как я могу получить доступ к динамическому объекту и затем изменить его? Я не хочу переходить на большую часть JS, чтобы заставить это работать.
Я думал о сохранении имени как «optionsPrice», а затем циклически перебираю все объекты и модифицирую правильный, основываясь на идентификаторе, который они содержат. Это не кажется очень эффективным, хотя.
Спасибо
Вы можете использовать объект вместо одной переменной:
var optionsPrice = {}
optionsPrice[<?php echo $_product->getId() ?>] = new Product.OptionsPrice(<?php echo $this->getJsonConfig() ?>);
Тогда вы можете сослаться на это как:
console.log(optionsPrice[YOUR_ID_HERE]);
console.log(optionsPrice["20"]); // Example
Других решений пока нет …