收藏
回答

wx:for循环生成组件的单一性使用问题?

请教高手解决思路。本人用WX:FOR循环生成了了以下界面的问卷,从上到下共三层。这个倒不是很重要。每个问题,如1.1, 1.2, 1.3 都是含有四个图片说明按钮,用来增加图片,用wx:if="{{item.picshow}}" 一次性控制每个问题的4个图片是否显示。某种程度上,其实每个 图片说明+ 都是唯一的,都需要追溯未来值(src)的。我的问题是,

  1. 在我现有JS wxml 架构下,是否可以实现bindtap锁定每个图片说明组件? 主要是不知道id data-id怎么巧妙使用。
  2. 或者需要转换何种架构更好的实现我的逻辑,或者如何能给每个图片说明加个唯一id ? 咋实现?
  3. 下一步,接收每个问题的所有控件的值,还是使用数组为最佳选择?

谢谢。

未操作时截图:

作了第一个图片时的截图:可以看到第一列的都进行了图片显示。

WXML:

<view wx:if="{{isShowOutL3_1}}">

  <scroll-view scroll-y="truestyle="height:1080rpx">

    <view class="L3boxwx:for="{{outlistL3_1}}wx:key="id">

      <view class="quesStyle">{{item.question}}view>

      <radio-group id="{{item.id}}class="radiostylewx:if="{{item.radioshow}}bindchange="handlechange">

        <radio value="yeschecked="trueclass="yesstyle">radio>

        <radio value="noclass="nostyle">radio>

      radio-group>

      <textarea id="{{item.id}}wx:if="{{item.freecommshow}}maxlength='160placeholder='有格式要求的请按照格式要求输入,最多160个字class="txtstylebindinput="handleipt">textarea>

      <view class="picareawx:if="{{item.picshow}}">

        <view wx:if="{{isActivePic1}}data-pic1="{{item.id}}data-id="1class="addpicbindtap="uploadpic1">图片说明+view>

        <image src="{{src_pic1}}id="{{item.id}}bindtap="previewpic1class="addpicwx:if="{{isShow_pic1}}">image>

        <view wx:if="{{isActivePic2}}data-pic2="{{item.id}}data-id="2class="addpicbindtap="uploadpic2">图片说明+view>

        <image src="{{src_pic2}}id="{{item.id}}bindtap="previewpic2class="addpicwx:if="{{isShow_pic2}}">image>

        <view wx:if="{{isActivePic3}}data-pic3="{{item.id}}data-id="3class="addpicbindtap="uploadpic3">图片说明+view>

        <image src="{{src_pic3}}id="{{item.id}}bindtap="previewpic3class="addpicwx:if="{{isShow_pic3}}">image>

        <view wx:if="{{isActivePic4}}data-pic4="{{item.id}}data-id="4class="addpicbindtap="uploadpic4">图片说明+view>

        <image src="{{src_pic4}}id="{{item.id}}bindtap="previewpic4class="addpicwx:if="{{isShow_pic4}}">image>

      view>

JS节选:

 uploadpic1(res) {

    console.log("res", res)

    let that = this

    wx.chooseImage({

      count: 1,

      sizeType: ['compressed'],

      sourceType: ['album', 'camera'],

      success(res) {

        // tempFilePath可以作为img标签的src属性显示图片

        const tempFilePaths = res.tempFilePaths[0]

        // console.log("选择图片成功", res.tempFilePaths[0])

        let randString = Math.floor(Math.random() * 1000000).toString() + '.png'

        wx.cloud.uploadFile({

          cloudPath: randString,

          filePath: tempFilePaths, // 文件路径

          success: res => {

            // get resource ID

            // console.log(res.fileID)

            that.setData({

              src_pic1: res.fileID,

              isShow_pic1: true,

              isActivePic1:false,

            })

          },

          fail: err => {

            // handle error

 uploadpic2(res) 类同上面 uploadpic3(res) 类同上面 uploadpic4(res)类同上面

Data中数组定义;

outlistL3_1: [

      {

        id: "Out.1.1",

        question: "1.1 是否有箱唛? ",

        radioshow: true,

        formatcommshow: false,

        formatcontent: ["Yes", "No", "描述一", "描述二"],

        freecommshow: false,

        picshow: true

      },

      {

        id: "Out.1.2",

        question: "1.2 主/正唛是否符合标准? ",

        radioshow: true,

        formatcommshow: false,

        formatcontent: ["Yes", "No", "描述一", "描述二"],

        freecommshow: false,

        picshow: true

      },

      {

        id: "Out.1.3",

        question: "1.3 有无手写唛? ",

        radioshow: true,

        formatcommshow: false,

        formatcontent: ["Yes", "No", "描述一", "描述二"],

        freecommshow: true,

        picshow: true

      },

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

2 个回答

  • 八九
    八九
    2020-08-20
    list:[
      {
        name:'1.1',
        banner:[
          {
            img:'1.1下第一张',
            isTrue:false
          },
          {
            img:'1.1下第二张',
            isTrue:false
          },
        ]
      },
      {
        name:'1.2',
        banner:[
          {
            img:'1.2下第一张',
            isTrue:false
          },
          {
            img:'1.2下第二张',
            isTrue:false
          },
        ]
      }
    ]
    

    数据格式改成这种吧,点击某张图的时候, 传父子id或者index,可以精确定位

    2020-08-20
    有用
    回复 2
  • A.G.A.I.N
    A.G.A.I.N
    2020-08-20

    outlistL3_1: [

          {

            id: "Out.1.1",

            question: "1.1 是否有箱唛? ",

            radioshow: true,

            formatcommshow: false,

            formatcontent: ["Yes", "No", "描述一", "描述二"],

            freecommshow: false,

            pics: [{url: '路径', show: false},{url: '路径', show: false},{url: '路径', show: false},{url: '路径', show: false}]

          },

    改一下数据结构

    2020-08-20
    有用
    回复 18
    • Jason_亮 🇨🇳
      Jason_亮 🇨🇳
      2020-08-20
      谢谢,我看看
      2020-08-20
      回复
    • Jason_亮 🇨🇳
      Jason_亮 🇨🇳
      2020-08-20
      url: '路径', show: false} 中的show:false怎么用? 很奇特
      2020-08-20
      回复
    • A.G.A.I.N
      A.G.A.I.N
      2020-08-20回复Jason_亮 🇨🇳
      v-for 内 嵌套 v-for 然后改数据里的show字段控制是否显示图片
      2020-08-20
      回复
    • Jason_亮 🇨🇳
      Jason_亮 🇨🇳
      2020-08-20回复A.G.A.I.N
      了解。我这里其实不是如何实现显示的问题,而是要把每个图片组件唯一化,记录其添加图片返回的src的值。你说的嵌套V-FOR解决的是如何显示的问题,而不是图片组件唯一性的问题。我的问题是如何锁定图片组件的值唯一?如何读?
      2020-08-20
      回复
    • 八九
      八九
      2020-08-20回复Jason_亮 🇨🇳
      数据格式改下,用下标,就是唯一了,比如1.1下面的第一张图,下标标识[0,0],第二张[0,1]
      2020-08-20
      回复
    查看更多(13)
登录 后发表内容
问题标签