关于replace方法改变模板字符串数据时的数据传递问题

本文详细介绍了一种从JSON文件中获取数据并将其渲染到前端界面的方法。通过使用JavaScript的$.get方法,从指定路径加载JSON数据,然后利用获取的数据初始化内容列表。文章深入解析了如何迭代JSON数据,构建产品列表及计算总价,并展示了如何将数据插入到模板字符串中,实现动态页面渲染。
// @param string 获取数据
function getList(){
  $.get("../../json/orders.json",
    function (data, textStatus, jqXHR) {
      console.log("我是订单数据组",data);
      var list = data.data.digestlist || [];
      initContentList(list);
    }
    );
}
// @param [] 获取数据
function getProduct(data){
  var list = data.product_list || [];
  list.push({type: 'more'});
  var str = '';
  list.forEach(item => {
    if(item.type === 'more'){
      str += getTotalPrice(data); //这里是data,因为我们要用的是列表的list数据,这里的item数据量很小
    }else{
      str+= `<div class="product-item">`
                +item.product_name+
                    `<div class="p-count">x`
                      +item.product_count+
                    `</div>
            </div>`
    }
  });
  return str;
}
// @param [] 计算总价
function getTotalPrice(data){
  var str = `<div class="product-item">
              <span>...</span>
              <div class="p-total-count">总记`
              +data.product_count+
             `个菜,实付<span class="total-price">`
             +data.total+
             `</span>
              </div>
            </div>`
  return str;
}
function getComment(data){
  var evaluation = !data.is_comment;
  if(evaluation){
    return `<div class="evaluation">
              <div class="evaluation-btn"></div>
            </div>`;
  }
  return '';
}
// @param [] 渲染列表
function initContentList(list){
  list.forEach((item, index) => {
    var str = itemTmpl.replace('$poi_pic', item.poi_pic)
                      .replace('$poi_name', item.poi_name)
                      .replace('$status_description', item.status_description)
                      .replace('$getProduct', getProduct(item))
                      .replace('$getComment', getComment(item));
    $('.order-list').append($(str));
  });
}

逻辑为先通过最上面的getlist,获取所要json,并定义list指代其中的digestlist,把list本身作为参数传给initcontentlist,之后迭代list,每个item相当于单项的digestlist,讲这个单项传给getproduct,在geiproduct里,他有自己的list,指代的是digestlist里的单项里的product_list,之后她迭代这个list,里面数据量很小,但注意getproduct里面进行了gettotalprice,gettotalprice用的参数为data,是和getproduct一样的,没有用item,注意这些变化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值