收藏
回答

修改单个for循环出来的input值

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 input 工具 6.0 2.3.0

如图,仿照美图外卖的样子从后台遍历出所有商品条目,怎样才能在点击加好/减号的时候 只改变当前item的input[type='text']的值,而不是全部input框的值


回答关注问题邀请回答
收藏

4 个回答

  • 痛快科技
    痛快科技
    2018-10-10

    给个参考,以下方式只需要单独更新当前修改的下标的值就可以了,不需要整个做setData数据更新:


    var index = e.currentTarget.dataset.index;//index为数组下标值

    undefined;

    var obj = {};

    obj['products[' + index + '].num'] = products[i].num++;

    this.setData(obj);


    2018-10-10
    有用 1
    回复
  • 文志🎫
    文志🎫
    2018-10-15

    给个参考,以下方式只需要单独更新当前修改的下标的值就可以了,不需要整个做setData数据更新:


    var index = e.currentTarget.dataset.index;//index为数组下标值

    undefined;

    var obj = {};

    obj['products[' + index + '].num'] = products[i].num++;

    this.setData(obj);


    2018-10-15
    有用
    回复
  • 周凯
    周凯
    2018-10-10

    算了,我想出来了,自问自答吧。。。我是通过点击加号/减号的时候,将这个商品的pid和后台取出来的原始商品数据进行for循环比对,只要点击按钮的pid和原始数据的其中一条pid相等,那就把这条原始数据的num++,当然取出来的原始数据中是没有num这个字段的话 就要在取出来后立即补一个num,默认值为0。

    plus:function(e){

    var products = this.data.product;

    for(var i=0;i<products.length;i++){

    if (products[i].pid == e.currentTarget.dataset.pid){

    products[i].num ++;

    }

    }

    this.setData({product:products})

    },

    })


    2018-10-10
    有用
    回复
  • 心喜阅童书
    心喜阅童书
    2018-10-10

    index  事件

    2018-10-10
    有用
    回复
登录 后发表内容