小程序数据重复输出哪里有问题

img


如图,如何让第一个地址显示1,第二个地址显示2,以此类推!还有复制问题,如何单独复制每个

wx:for下数组,下面为数组,代码片段打开微信开发工具后访问下面的链接导入(开发工具需要1.02.1812180以上版本)

/**数据定义
 * 键名称为文本框要输入的值
 * 值为下载网址数组
 * 按照下面的格式添加
 */
let kv={
  "123":["111111","22222"],
  "911500007014628574": ["https://dlj.51fapiao.cn/dlj/v7/c21b3103b252619af56d51ef9025a5414f72db"],
  "911101015790091347": ["https://dlj.51fapiao.cn/dlj/v7/a01033b3f5f201c69508f9bc10a91a43406276"]
};
//导出数据
module.exports.kv=kv;

可以借鉴下

data:{
  informat:false,
  textareaInfo:{}, //存放缓存数组
  
},
  //当从二级页面返回时会加载该方法
  onShow: function (options) {
    this.setData({
      //初始化data数据
      informat:false,
      textareaInfo:{},
      textareaWords:[],
      textareaType:[]
    })
    this.onLoad()
  },
  
  //当第一次启动时会加载该方法
  onLoad:function(){
    const textareaInfo = wx.getStorageSync("textareaInfo");
    if(textareaInfo){ //如果缓存数组存在数据
      this.setData({
        informat:true,
        textareaInfo:textareaInfo,
      })
    }
  }


  1. 显示地址序号

可以在前端页面遍历显示地址列表时,设置一个计数器变量num,表示当前地址的序号,初始化为1。遍历时显示当前地址的num值,然后num自增1,依次递增即可。

示例代码如下:

// 在前端页面中遍历显示地址列表
<view wx:for="{{addressList}}" wx:key="id">
  <view> {{index+1}}.{{item.address}} </view>
  <button bindtap="copyAddress" data-address="{{item.address}}">复制</button>
</view>

在这个示例中,我们遍历显示addressList数组中的每个元素,使用wx:for指令循环渲染。在循环中使用index+1来显示当前地址的序号,使用data-address属性来保存当前地址的文本内容,供复制操作使用。

  1. 单独复制地址

针对复制问题,在微信小程序中可以使用wx.setClipboardData() API来实现文本的复制。在复制操作时,可以将要复制的文本保存在data-xxx属性中,然后通过事件的dataset属性获取到当前要复制的文本内容,调用wx.setClipboardData()来实现复制。

示例代码如下:

Page({
  // 复制地址
  copyAddress: function(e) {
    const address = e.currentTarget.dataset.address;
    wx.setClipboardData({
      data: address,
      success: function() {
        wx.showToast({
          title: '已复制地址',
          duration: 2000
        });
      },
      fail: function() {
        wx.showToast({
          title: '复制失败',
          icon: 'none',
          duration: 2000
        });
      }
    });
  }
});

在这个示例中,我们通过定义一个copyAddress()方法来处理复制操作,在方法中通过e.currentTarget.dataset.address来获取当前要复制的文本内容,然后调用wx.setClipboardData() API进行复制。同时,在复制操作成功或者失败后,使用wx.showToast() API提示用户相应的信息。

需要注意的是,由于微信小程序的安全限制,wx.setClipboardData() API只能在小程序环境下调用,无法从微信网页中调用。

以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:

可以这样实现:

  1. 在data.js中定义数据:
js
let kv = {
  "911500007014628574": 1,
  "911101015790091347": 2,
  // 更多数据...
}

  1. 在index.wxml中使用数据渲染:
html
<view wx:for="{{kv}}" wx:key="key">
  <text>{{item.key}}: {{item.value}}</text>
</view>


  1. 在index.js中将data.js中的数据导入:
js
const data = require('./data.js')
Page({
  data: {
    kv: data.kv
  }
})

  1. 这样在页面中kv对象的value值就会显示1,2,3等。
    对于复制问题,可以在click事件中获取每条数据的key值,并调用wx.setClipboardData异步接口将key复制到剪贴板:
html
<view wx:for="{{kv}}" wx:key="key" bindtap="copyKey"> 
  <text>{{item.key}}: {{item.value}}</text>
</view>


j

s
copyKey(e) {
  wx.setClipboardData({
    data: e.currentTarget.dataset.key
  })
}

在data-key中储存每条数据的key,在click事件中获取并复制。

所以完整代码如下:
data.js

js
let kv = {
  "911500007014628574": 1,
  "911101015790091347": 2,
  // 更多数据...
} 

module.exports = {
  kv: kv
}

index.wxml

html
<view wx:for="{{kv}}" wx:key="key" bindtap="copyKey"  data-key="{{item.key}}"> 
  <text>{{item.key}}: {{item.value}}</text> 
</view>


index.js

js
const data = require('./data.js')
Page({
  data: {
    kv: data.kv
  },
  copyKey(e) {
    wx.setClipboardData({
      data: e.currentTarget.dataset.key
    })
  }
})