vue v-for循环与class计算类名 20C
 <li :class="0|title_li_class" @click="titleli_click($event,0)">全部</li>
<li v-for="(item, index) in titleli_list" @click="titleli_click($event,item[0])" :class="item[0]|title_li_class">{{item[1]}}</li>

//filters(vue 里过滤器);
filters: {
        title_li_class: function (value) {
                if (value == this.Classify) {
                        return 'cur';
                }
                else {
                        return '';
                }
        }
},


//fn_url(vue methods里的方法,加载页面时执行);
fn_url: function () {
    if (location.href.indexOf("?") != -1) {
            if (location.href.split('?')[1].split('=')[0] == 'Classify') {
                    this.Classify = location.href.split('?')[1].split('=')[1];
            }
            else {
                    this.Classify = 0;
            }
    }
    else {
            this.Classify = 0;
    }
},

要求:从地址栏获取Classify的值,对应ajax请求到的titleli_list循环产生的item[0],当item[0]等于Classify的时候class类名li就为cur,不等于的时候就没有类名,当地址栏没有Classify的时候也就是Classify等于0,第一个li也就是文字全部的li标签有类名cur,否则没有类名,要怎么写?我这样用过滤器写的方法不对

2个回答

fn_url从哪里执行,不行Classify 作为全局变量,不要加this,你的this指向应该有问题,filter中this是window对象,要注意this的指向

showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 回复qq_33709408: fn_url中的this.,改为window.就行了变为全局的,已经说了filters中this为window对象
2 年多之前 回复
qq_33709408
qq_33709408 fn_url(vue methods里的方法,加载页面时执行)
2 年多之前 回复

filters里面的this不是指向vue实例哦
所以你可能需要写过滤器的时候把Classify也传入到filters里面**item[0]|title_li_class(Classify)** 同样,你的filter里面的接受参数要改为两个

另外一个小提示 vue文档也有说过,很多时候我们都可以用computed来解决需要用到filter的事情

stopllL
white_g 回复qq_33709408: 没有加上类名你只需要在filter里面打印下判断条件值就能知道,找问题一点点定位。你在filter里面打印Classily是否有值,值是否对。如果这个没问题,那么你的filter就应该是没问题。 其实你检查filter的两个传入值就能断定问题是出在哪个头上
2 年多之前 回复
qq_33709408
qq_33709408 之前就是因为在页面加载渲染完成之后,地址栏的参数对应的li没有添加类名才改的代码,结果还是不行。。。。。。。
2 年多之前 回复
stopllL
white_g 回复qq_33709408: 你说的那个method的方法是加载的时候执行的,表述这个问题说一下你在哪个钩子中实现的,建议在create中调用,mounted是html已经挂载完成,template里面已经渲染完成,所以filter已经执行过了。 至于为什么点击一下才会显示正常,没看见你的cliclhandler所以不知道你是不是有改变state中的状态导致页面重新渲染。 上面都是猜测你可以这样调试看看。如果不对,你可以自己调试一下,比如在filter里面打印一下Classily的值看看对么
2 年多之前 回复
qq_33709408
qq_33709408 中说的是没问题,但是效果出不来,页面加载渲染完成之后,结果li上的类名全部为过滤器里不相等的那个,点击一下出发li上的点击事件才会正常显示,我改了返回的结果,发现在渲染的时候已经获取到地址栏的参数,也就是Classify已经有值了,但为什么会这样呢?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐