7***@qq.com
7***@qq.com
  • 发布:2019-05-24 09:15
  • 更新:2019-05-24 10:06
  • 阅读:837

【报Bug】数组不能在渲染时绑定

分类:uni-app

详细问题描述

数组在进行三元判断时,无法绑定,:class="[isClick[index]==1 ? 'clickImg':'selectItem']",测试时相关数组数据正确,但是无法绑定执行。
[内容]
实现的内容很简单,就是从数据库获得用户信息,包括图片,然后排列显示,当点击用户图片时,被点击的图片变灰,如下图所示,点击第1个图片和第2个图片的时候,图片变灰,但实际上无法操作。

相关代码如下:
<view class="selectItem" v-for="(item,index) in selectPArr" @click="selectPClick" :id="index" :key="index" >
<image :src="'http://localhost/test' + item.imageurl" style="width:80upx;height:80upx" :class="[isClick[index]==1 ? 'clickImg':'selectItem']" ></image>
<text style="display: block; font-size: 10upx;">{{item.nickname}}--{{isClick[index]}}--{{index}}</text>
</view>
<script>
var _self;
export default {

    data() {  
        return{  
            isClick : [],  
            selectPArr : [],  

        }  

    },  
    onLoad() {  
        _self = this;  
        uni.request({  
            url: 'http://192.168.146.1/test/index.php',  
            method: 'POST',  
            header: {  
                    'content-type': 'application/x-www-form-urlencoded',   
                },  
            data:{},  
            success: function(res){  
                    _self.selectPArr = res.data;  

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

                    _self.isClick[i]=0;  

                }  
                },  
            fail:function(e){  
                console.log(e);  
            }  
        })  
    },  
    methods: {  

        selectPClick :  function(e) {  
            _self.isClick[e.currentTarget.id]=1;  
        }  
    }  
}  

</script>

2019-05-24 09:15 负责人:无 分享
已邀请:
回梦無痕

回梦無痕 - 暂停服务

为什么要_self=this?
直接this.isClick[e.currentTarget.id]=1; 不行?

view:

@click="selectPClick(index)"

methods:

selectPClick(index) {    
    this.isClick[index]=1;    
}
7***@qq.com

7***@qq.com (作者)

不能直接用this,这两个this不是一个this

  • 回梦無痕

    你的代码中,两个this是相同的,在回调函数中使用es6()=>{}就行了

    2019-05-24 09:31

7***@qq.com

7***@qq.com (作者)

这个this不是关键问题,关键问题是渲染不出来这个数组,但是有时候奇怪,我重新改了代码,编译后又渲染出来了

  • 回梦無痕

    渲染数据,this是关键,你this指向不清,很容易搞错,特别是各种回调函数中,所以推荐es6()=>{}

    2019-05-24 09:47

7***@qq.com

7***@qq.com (作者)

还有个很奇怪的现象,我在view里改个东西,先让他出错,比如[isClick[index]==1,我改成{isClick[index}==1,然后保存,报错,接着我又改回正确的,居然能渲染了。

  • 回梦無痕

    嗯,你继续测试这些奇怪的现象吧。

    2019-05-24 10:01

7***@qq.com

7***@qq.com (作者)

this.$forceUpdate();最后解决了,加上这个强制刷新

该问题目前已经被锁定, 无法添加新回复