欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Vue基础(二):常用的vue指令

程序员文章站 2022-05-15 17:38:19
...

Vue基础(二)




一.V-model修饰符

v-model除了能绑定数据,还能在绑定的基础上加一些修饰符

比如: .lazy 懒惰的 .number 只能输入数字 .trim 自动过滤收尾的空白字符

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue的双向绑定v-model</title>
    <script src="js/vue.js"></script>
</head>

<body>
    <div id="app">
        <p>{{msg}}</p>
        <input type="text" v-model="msg">
            <!-- 
            修饰符
            .lazy 懒惰的
            .number 只能输入数字
            .trim 自动过滤收尾的空白字符
            -->
            <input type="text" v-model.lazy="txt">
            <label for="">{{txt}}</label>
            <br>
            <input type="text" v-model.trim="txt">
            <label for="">{{txt}}</label>
        </div>
    </div>
    <script type="text/javascript">
        new Vue({
            el: '#app',
            data: {
                msg: 'Home',
            }
        })
    </script>
</body>
</html>

二.计算属性之computed

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护,例如:

<div id="example">
  {{ message.split('').reverse().join('') }}
</div>

在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量 message 的翻转字符串。当你想要在模板中多包含此处的翻转字符串时,就会更加难以处理。

所以,对于任何复杂逻辑,你都应当使用计算属性computed

<div id="app">
  <p>Original message: "{{ msg}}"</p>
  <p>Computed reversed message: "{{ rMsg}}"</p>
</div>
new Vue({
  el: '#app',
  data: {
    msg: 'Hello'
  },
  computed: {
    rMsg: function () {
      return this.msg.split('').reverse().join('')
    }
  }
})

计算属性的优点:

能够产生缓存,如果数据没有发生变化,直接从缓存中取数据

需要注意的是,计算属性默认只有 getter,不过在需要时你也可以提供一个 setter:

	<div id="app">
        {{content}}
        <input type="text" v-model='content' @input='handleInput'>
        <button @click='handleClick'>提交</button>
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                msg: ''
            },
            methods: {
                handleInput: function (event) {
                    const { value } = event.target;
                    this.content = value;
                },
                handleClick:function(){
                    if(this.content){
                        console.log(this.content);
                    }
                }
            },
            computed: {
                content: {
                    set: function (newV) {
                        this.msg=newV;
                    },
                    get: function () {
                        return this.msg;
                    }
                }
            }
        })
    </script>

现在再运行 vm.content= ‘JayChou’ 时,setter 会被调用,vm.msg 也会相应地被更新。

三.过滤器

过滤器的实质:说白了就是给数据添油加醋
过滤器分为全局过滤器局部过滤器

创建全局过滤器,创建一次,在各个组件中都能使用

	//全局过滤器
	Vue.filter('myReverse',(val)=>{
            return val.split('').reverse().join('');
        })
        
	new Vue({
            el: '#app',
            data: {
                msg:'hello 过滤器',
            }
        })

局部过滤器:只能在局部中使用

<div id="app">
        {{price | myPrice('$')}}
        <h3>{{msg | myReverse}}</h3>
    </div>
    <div class="opp"></div>
    <script>
        //为数据添油加醋
        //$10
        //创建全局过滤器,创建一次,在各个组件中都能使用
        Vue.filter('myReverse',(val)=>{
            return val.split('').reverse().join('');
        })
        new Vue({
            el: '#app',
            data: {
                msg:'hello 过滤器',
                price: 10
            },
            methods:{
                newName:function(){
                    
                }
            },
            filters: {//局部过滤器,只能在局部中使用
                myPrice: function (price,a) {
                    // myPrice过滤器的名字
                    // console.log(price);
                    return a+price;
                }
            }
        })
    </script>

总结

以上就是今天要讲的内容,感谢您的阅读

相关标签: vue