vue或angular 写filter时,传入的是对象时一定注意,不能直接改变对象的值,因为在使用该filter的页面上,若传入的对象其他值发生变化,该filter也会重新运行,这样可能会报错,如下例子会产生undefined的对象值

下面的例子是利用vue vant  ,arrtoArr是将['0','2']---->'问题1,问题3'的格式在页面中显示

页面

           <div v-for="item,index in list" v-if="list.length!=0">
{{item.parstr | filtertest}}:{{item.pararr | arrtoArr}} //item对象的count值变化也会触发两个filter的变化
<span class="count">
<span @click="updateCount('deduce',index)">
<i class="van-icon van-icon-reduce-o"></i>
</span>
{{item.count}}
<span @click="updateCount('add',index)">
<i class="van-icon van-icon-add-o"></i>
</span>
</span>
</div>

页面对应的数据和方法

data:{
return {
list:[
{
parsrt:1,
pararr:['2','1'],
desc:'',
count:0
},
{
parstr:2,
pararr:['1','4','5'],
desc:'',
count:0
}
]
}
} ,
methods:{
updateCount(oprt,index){
if(oprt=='reduce'){
if(this.serviceList[index].count<=1){
this.$dialog.confirm({
title: '警告',
message: '确认删除么'
}).then(() => {
this.serviceList.splice(index,1);
}).catch(() => {
});
}else{
this.serviceList[index].count--; //一定注意此处serviceList的内部的某一个对象的count变化了,上面页面的两个filter都会重新运行
}
}else{
this.serviceList[index].count++;
}
} }

  

filter.js

Vue.filter('arrtoArr',function(par){
var comparlist = {
0:'问题1',
1:'问题2',
2:'问题3',
3:'问题4',
4:'问题5',
5:'问题6',
6:'问题7',
7:'问题8',
100:'问题9'
}
var arr = []
if(par==undefined||par.length<1){
return ''
}else{
for(var i=0;i<par.length;i++){
var tt = par[i] //此处不可直接改变其par参数的值
arr.push(comparlist[tt])
}
return arr.join(',');
}
})

利用vue写filter时 当传入是一个对象时注意的更多相关文章

  1. 利用vue写一个复选框的组件

    HTML <multicheck :source=tlist :busValue='objInfo.tt' @getTt="getTtInfo"></multic ...

  2. vue实战(一):利用vue与ajax实现增删改查

    vue实战(一):利用vue与ajax实现增删改查: <%@ page pageEncoding="UTF-8" language="java" %> ...

  3. vue中echarts 在element-ui的tab 切换时 width 为100px 时的解决方式

    最近在项目中遇到了这种情况,需要在tab控件上渲染多个echart图标,然后切换查看时,发现图表的宽度不正确 原因:在页面进行加载时,隐藏的图表找不到对应的div大小,所以默认给了一个大小.所以要做的 ...

  4. .NET Core的日志[5]:利用TraceSource写日志

    从微软推出第一个版本的.NET Framework的时候,就在“System.Diagnostics”命名空间中提供了Debug和Trace两个类帮助我们完成针对调试和跟踪信息的日志记录.在.NET ...

  5. 利用Vue.js实现拼图游戏

    之前写过一篇<基于Vue.js的表格分页组件>的文章,主要介绍了Vue组件的编写方法,有兴趣的可以访问这里进行阅读:http://www.cnblogs.com/luozhihao/p/5 ...

  6. 利用redis写webshell

    redis和mongodb我之所见 最近自己在做一些个人的小创作.小项目,其中用到了mongodb和redis,最初可能对这二者没有深入的认识.都是所谓的“非关系型数据库”,有什么区别么? 实际上,在 ...

  7. 利用maven的filter和profile实现不同环境使用不同的配制

    在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停 ...

  8. 学了C语言,如何利用cURL写一个程序验证某个网址的有效性?

    在<C程序设计伴侣>以及这几篇关于cURL的文章中,我们介绍了如何利用cURL写一个下载程序,从网络下载文件.可是当我们在用这个程序下载文件时,又遇到了新问题:如果这个网址是无效的,那么我 ...

  9. 利用TraceSource写日志

    利用TraceSource写日志 从微软推出第一个版本的.NET Framework的时候,就在“System.Diagnostics”命名空间中提供了Debug和Trace两个类帮助我们完成针对调试 ...

随机推荐

  1. 010-ThreadGroup线程组

    线程组ThreadGroup表示一组线程的集合,一旦一个线程归属到一个线程组之中后,就不能再更换其所在的线程组.那么为什么要使用线程组呢?个人认为有以下的好处:方便统一管理,线程组可以进行复制,快速定 ...

  2. timeUtil

    /** * 字符串的日期 格式 yyyy-MM-dd * 转入参数,添加或减去它的天数,在返回字符串 */ public static String addOrDelRq(String rq,int ...

  3. vue-电脑端导出-txt

    // fakeClick(obj) { // var ev = document.createEvent("MouseEvents"); // ev.initMouseEvent( ...

  4. ABP中针对sql2008的数据库配置

  5. Java 基础 面向对象修饰符和自定义数据类型

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符如下: public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是 ...

  6. shell for 循环数组

    name=(aa bb) ;i<${#name[*]};i++)) do name=${name[i]} echo "$name" done

  7. node微信公众号开发--设置自定义菜单

    var request = require("request"); const querystring = require("querystring"); re ...

  8. PHP DDOS的UDP攻击,TCP攻击,和CC攻击的核心代码

    网络安全向,请勿用作非法用途 CC攻击模块: <?phpecho “状态 : 正常运行中…..<br>”;echo “================================ ...

  9. python threading acquire release

    线程同步 //test.py import threading import time exitFlag = 0 class myThread (threading.Thread): def __in ...

  10. eclipse 把鼠标指针放在错误的语句上 提示快速修正 不见了的解决方法

    Window->Preferences->Java->Editor->Hovers 将[Combined Hover]选择即可,如果第一个[Variable Values]已经 ...