vue循环重复解决,自定义过滤器,避免闪烁

     * vue版本均为1.0

       vue循环数据重复解决           

 v-for指定,在循环数据时候,如果出现重复的数据,会将重复数据删除,

      vue1.0:只要在v-for循环的地方加上track-by="$index" <li v-for='value in arr' track-ty='$index'></li>

      vue2.0+:需要在v-for上获取到index,例如:<li v-for='(value,index) in arr ' track-ty='index'></li>

     vue加载避免用户看到{{}} 花括号

1>vue1.0使用 v-cloak,在使用花括号的地方

           css中定义:[v-cloak]{display:none;},在节点上加上<div id='box' v-cloak>{{msg}}</div>

2>使用v-text指令替换{{text}}花括号

3>使用v-html指令替换{{{html}}}转义的花括号

	vue自定义过滤器
vue1.0提供了自带的过滤器,limitBy,orderBy等,vue中自定义过滤器语法:
Vue.filter(name,function(input){
			return xxx;
		});
举个例子:
<script src="lib/vue2.0.js"></script>
</head>
<body>
    <div id="box">
        {{a|toDou}}
    </div>
</body>
<script>
    Vue.filter('toDou',function (input) {
        return input<10?'0'+input:''+input;
    })
    var vm=new Vue({
        data:{
            a:9
        },
        methods:{

        }
    }).$mount('#box');
</script>
vue双向过滤器
<script src="lib/vue.js"></script>
    <script>
        //<h2>welcome</h2>
        Vue.filter('filterHtml',{
            read:function(input){ //model-view
                return input.replace(/<[^<]+>/g,'');
            },
            write:function(val){ //view -> model
                console.log(val);
                return val;
            }
        });
        window.οnlοad=function(){
            var vm=new Vue({
                data:{
                    msg:'<strong>welcome</strong>'
                }
            }).$mount('#box');
        };

    </script>
</head>
<body>
<div id="box">
    <input type="text" v-model="msg | filterHtml">
    <br>
    {{{msg}}}//将html转义输出
</div>
输出的结果都是: welcome
    监听数据变化
    vm.$watch(name,fnCb);  //浅度
<script >
    var vm = new Vue({
        data:{
            a:111,
            b:22
        }
    }).$mount('#box');
    vm.$watch('a',function () {
        this.a = this.a+1;
    });
    document.onclick = function () {
        vm.a = 1;
    };
</script>
vm.$watch(name,fnCb,{deep:true});//深度监听,属性变化也能监听到
 window.οnlοad=function(){
        var vm=new Vue({
            el:'#box',
            data:{
                json:{name:'strive',age:16},
                b:2
            }
        });

        vm.$watch('json',function(){
            alert('发生变化了');
        },{deep:true});

        document.οnclick=function(){
            vm.json.name='aaa';
        };
    };


 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值