我有以下javascript代码,我想动态分配其中一个值:
dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {'step': 1, 'option': 'Visa'},
'products': [{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1
}]
}
}
});
我想通过创建一个新变量来动态分配'product'的内容,所以最终的代码是这样的:
dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {'step': 1, 'option': 'Visa'},
'products': my_new_array
}
}
});
我尝试使用smarty这样做,所以它看起来像这样:
{literal}
dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {'step': 1, 'option': 'Visa'},
'products': [
{foreach $products as $product}
{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1
}
{/foreach}
]
}
}
});
{/literal}
但它不起作用。 我怎样才能实现这一目标?谢谢你的帮助。
答案 0 :(得分:0)
我找到了解决方案。
var jsonObj = [];
for(var i=0; i<products.length; i++){
var item = {};
var position = i + 1;
item["id"] = products[i].id_product;
item["name"] = products[i].name;
item["price"] = products[i].price;
item["brand"] = "Brodo";
item["category"] = category.name;
item["variant"] = products[i].name;
item["list"] = category.name + " list";
item["position"] = position;
jsonObj.push(item);
}
var product_list = JSON.stringify(jsonObj);
dataLayer.push({
'ecommerce': {
'currencyCode': 'IDR',
'products': product_list
}
});