Vue——二

5 过滤器

过滤器,自定义函数,输出内容,操作数据

调用过滤器:

{{price|flo}}

全局过滤器:

Vue.filter('过滤器名',function(n){
		return n.toFixed(2) + '元'       //四舍五入保留两位小数,n是被处理的数据
		})

局部过滤器:在Vue对象里的filters参数,封闭性

filters:{
            flo:function (n) {
                return n.toFixed(2) + '元'
    }

parseFloat:浮点型强转

parseInt:整型强转

事件冒泡:js子元素触发事件,父元素同类的事件也会跟着触发

splice(1,1,3) 从 索引 为 1 的位置,删除之后的 1 个元素, 添加 3

<!-- javascript:; # 阻止a标签跳转 --><li :style="index%2==0?style2:style1" v-for="item,index in todolist">   <span>{{item}}</span>   <a href="javascript:;" @click="up(index)" class="up"> ↑ </a>   <a href="javascript:;" @click="down(index)" class="down"> ↓ </a>   <a href="javascript:;" @click="del1(index)" class="del">删除</a></li>

6 计算属性和侦听属性

1 计算属性

computed,对数据进行处理,data数据的调整,相当于函数,过滤器,在原来的标签中,更注重被处理数据的改变,而计算属性,可以改变任何的data数据。

<p>{{ 值 }}</p>
computed:{
	值:function(){         //(这个值在视图中被使用)
			处理
			return res
}
}
2 侦听,监听属性

侦听 data 中某个数据的变化,对象或变量,当数据发生变化,就执行对应的函数。函数的两个形参:

(变化前数据,变化后数据)

watch:{
	num:function(v1,v2)
}

7 Vue对象的生命周期

每个Vue对象,创建,初始化过程。这个过程,Vue.js 自动运行 一些 叫做 生命周期 的钩子函数,我们可以使用这些函数,进行一定的处理。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>局部过滤器</title>
    <script src="vue.min.js"></script>
</head>
<body>
    <div id="app">
        <p @click="num++">{{num}}</p>
    </div>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                num: 10,
            },
            beforeCreate(){
                console.log("----vm对象初始化完成之前自动执行的代码----");
                console.log(this.$el);
                console.log(this.$data);
            },
            created(){ // 这里主要实现到服务端获取页面数据[ajax]
                console.log("----vm对象初始化完成以后自动执行的代码----");
                console.log(this.$el); // 没有查找到vm需要控制的元素
                console.log(this.$data); // 已经把data模型中的数据注入到vm对象里面作为属性了
            },
            beforeMount(){
                console.log("----vm数据渲染到html模板之前执行的代码----");
                console.log(this.$el);
            },
            mounted(){ // 修改页面的内容[页面特效]
                console.log("----vm数据渲染到html模板之后执行的代码----");
                console.log(this.$el);
            },
            // beforeUpdate(){
            //     console.log("----数据更新了,渲染之前执行的代码------");
            //     console.log(this.num);
            //     console.log(this.$el.innerHTML);
            // },
            // updated(){
            //     console.log("----数据更新了,渲染之后执行的代码------");
            //     console.log(this.num);
            //     console.log(this.$el.innerHTML);
            // },
            // 销毁vm对象 vm.$destroy()
            beforeDestroy(){
                console.log("--- 当vm对象被销毁之前,会自动执行这里的代码 ---");
                console.log( this );
            },
            destroyed(){
                console.log("--- 当vm对象被销毁以后,会自动执行这里的代码 ---");
            }
        });
    </script>
</body>
</html>

总结:

在vue使用的过程中,如果要初始化操作,把初始化操作的代码放在 mounted 中执行。
mounted阶段就是在vm对象已经把data数据实现到页面以后。一般页面初始化使用。例如,用户访问页面加载成功以后,就要执行的ajax请求。

另一个就是created,这个阶段就是在 vue对象创建以后,把ajax请求后端数据的代码放进 created

8 阻止事件冒泡和刷新页面

事件冒泡:js子元素触发事件,父元素同类的事件也会跟着触发

阻止冒泡:.stop

阻止刷新:.prevent

@click.stop
@click.prevent
@click.stop.prevent

<div class="box2" @click.stop.prevent="alert('box2')"></div>   <!-- @click.stop来阻止事件冒泡 -->
<input type="submit" value="提交02" @click.prevent=""> <!-- @click.prevent来阻止表单提交 --> 
<a href="http://www.baidu.com" @click.stop.prevent="show">百度</a> 
<!-- 辅助指令可以多个链式调用 -->// 阻止a标签跳转

利用事件冒泡,实现事件委托:点击的是子标签,但是,事件绑定在父标签

 <ul id="app">
        <li>1111111111111111</li>
        <li>2222222222222222</li>
        <li>3333333333333333</li>
        <li>4444444444444444</li>
        <li>5555555555555555</li>
    </ul>
    <script>
    // 批量元素绑定事件
    //  var list = document.getElementById("app").children;
    //  for(var i in list){
    //      list[i].onclick = function(){
    //          console.log(this.innerHTML);
    //      }
    //  }

     // 可以通过事件委托来提升性能
    var ul = document.getElementById("app");
     ul.onclick = function(event){
         // 事件最初的触发元素
         var self = event.target;
         console.log(self.innerHTML)
     }
    </script>
原文地址:https://www.cnblogs.com/pythonwl/p/13154616.html