收藏
回答

左滑删除,input控件总是删除for循环里的最后一个

问题模块
API和组件

今天想做一个左滑删除的操作,然后发现一个问题,不知道是我程序问题,还是小程序的bug。

在for循环的列表渲染里有一个input控件,左滑删除以后,发现input删除的是最后一条,view什么的都能按滑动的id删除,但是就是input控件,默认就是删除for循环里的最后一个。

wxml代码如下:

<view wx:for="{{alarm_array}}" wx:key="" class="input-item-header" bindtouchstart="touchstart" bindtouchmove="touchmove"  wx:for-item="item" id="{{item.order}}">
          <view class="input-item-header-content {{item.isTouchMove ? 'touch-move-active' : ''}}">
            <view class="input-label-title special slide-delete">报警号{{item.order}}</view>
            <input id="input{{item.order}}" class="slide-delete" placeholder="请输入报警号{{item.order}}"/>
            <view class="del" catchtap="del" data-id="{{item.order}}">删除{{item.order}}</view>

          </view>

</view>


最后一次编辑于  2017-06-26  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

1 个回答

  • hulk
    hulk
    2017-06-26

    需要添加wx:key,如果不提供,那么在删除的时候并不知道要删除那个input,文档中对wx:key有详细描述

    https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/list.html


    wx:key

    如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容,<switch/> 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。

    wx:key 的值以两种形式提供

    1. 字符串,代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。

    2. 保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字,如:

    当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。


    2017-06-26
    赞同
    回复