• 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>
    
  • 相关阅读:
    关于 flutter_boost Attempt to invoke virtual method ' com.idlefish.flutterboost.FlutterViewContainerManager.getCurrentTopRecord()' on a null object reference
    关于 flutter_boost TextField的autofocus导致页面闪动回弹
    关于 flutter ios打开一个带有百度地图的native页面闪退Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread
    关于 flutter_boost demo 隐藏导航栏后push flutter page 右滑返回失效
    关于 flutter 只能用armeabi单架构的问题
    关于数组的length属性
    python 常见问题:导入py文件易忽略问题
    IE浏览器兼容性测试 文档模式,浏览器模式
    关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
    [BS-28] iOS中分页的几种算法
  • 原文地址:https://www.cnblogs.com/pythonwl/p/13154616.html
Copyright © 2020-2023  润新知