饥人谷技术博客

vue.js-过滤器、指令、事件、语法糖

2019-08-05  本文已影响3人  学的会的前端

小练习

<body>
<div id = "dataApp">
    {{date}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<script>
    //需求:在页面中实时显示当前时间
    var app = new Vue({
        el: "#dataApp",
        data: {
          date: new Date()
        },
        mounted: function(){
          var _this = this; //this代表的就是vue实例
            //setInterval():定时器
            this.timer = setInterval(function(){
              _this.date = new Date();
            },1000)
        },
        //在vue 实例销毁之前,必须清楚定时器
        beforeDestroy:function(){
          //如果定时器存在,就清除定时器
            if(this.timer){
              clearInterval(this.timer)
            }
        }

    })
</script>
</body>

过滤器

<div id = "dataApp">
    {{date}}
    <br/>
    <!--过滤器,|后面紧跟过滤器的名字,-->
    {{date | formatDate}}
//过滤器
var plusDate = function(value){
      return value < 10 ? '0' + value : value //如果value < 10返回 0+value,大于10,返回value
    };
    var app = new Vue({
        el: "#dataApp",
        data: {
          date: new Date()
        },
        //定义过滤器,因为过滤器不只是一个,所以生成对象
        filters: {
          //value是默认属性,必须添加,va
            formatDate: function(value){
              //将字符串转化成date类型
                var date = new Date(value);
                var year = date.getFullYear(); //年
                var month = plusDate(date.getMonth() + 1);//月
                var day = plusDate(date.getDay()); //日
                var hours = plusDate(date.getHours()); //时
                var min = plusDate(date.getMinutes()); //分
                var sec = plusDate(date.getSeconds()) //秒
                //将整理好的数据返回
                return year + '--' + month + '--' + day + '--' + hours + '--' + min + '--' + sec;

          }
        },
.....

指令和事件

指令( Directives )是 Vue 模板中最常用的一项功能,它带有前缀 v-,能帮我们
快速完成DOM操作。循环渲染。显示和隐藏

<div class = "{{className}}"></div> <!--拿不到值-->
<div v-bind:class = "className"></div> <!--可以拿得到值-->

vue中用到的所有方法都定义在methods中,和data平级。

<body>
    <div id = "app">
        获取message数据:{{message}}<br/>
        v-text:解析文本:<span v-text = "apple"></span><br/>
        v-text解析HTML,显示的HTML字符串而不是相应地元素渲染<br/>
        <div v-text = "banana"></div>
        v-html解析HTML:<div v-html = "banana"></div>
        v-bind绑定活的属性:<div v-bind:class = "className"></div>
        v-bind的语法糖:<div :class = "className"></div>
        v-on绑定事件:<button v-on:click = "count">{{countnum}}</button><br/>
        v-on绑定事件的语法糖:<button @click = "count">{{countnum}}</button>
    </div>
    <script>
    var app = new Vue({
        el: "#app",
        data: {
            message: 'hello!',
            apple: '这是一个苹果!',
            banana: '<span style = "color: red;">这是红色</span>',
            className: 'content',
            countnum: 0
        },
        methods: {
            count: function(){
                this.countnum = this.countnum + 1
            }
        }
    })
    
    
    </script>
</body>

语法糖

语法糖是指在不影响功能的情况下 , 添加某种简洁方法实现同样的效果 , 从而更加方便程序开发。

v-bind: 可以转换成 :
v-on: 可以转换成@
上一篇 下一篇

猜你喜欢

热点阅读