Vue从入门到放弃(一)——指令篇

1.v-if/v-else和v-show

1.1 v-if

常和v-else连用,v-if:跟true,则这个dom被渲染,否则就渲染else

body>
    <div id="app">
        <p v-if="isOk">v-iftrue就显示</p>//这一行显示
        <p v-else>v-else显示的情况</p>//这一行不显示
    </div>
    <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                isOk:'true'
            }
        })
    </script>
</body>
1

1.2v-show

让dom节点显示,实际上是改变display属性

<div id="app">
        <p v-show="isOk">我是使用v-show指令的</p>
    </div>
    <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                isOk:'true'
            }
        })
    </script>

1.3区别

  • v-if用来判断是否加载,在需要的时候再让服务器加载,减轻服务器压力
  • v-show调整css display属性,可以让客户端操作更加流程

2.v-for

v-for主要用来遍历,可以渲染列表,常用在<li>标签,<option>标签

2.1遍历数组

<div id="app">
        <ul>
            <li v-for="item in items">{{item}}</li>
        </ul>
    </div>
    <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                items:[1,2,6,32,65,8]
            }
        })
    </script>
  • 也可以写成(item,index) in items其中index是索引
  • 给数组排序
<div id="app">
        <ul>
            <li v-for="item in sortItem">{{item}}</li>
        </ul>
    </div>
    <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                items:[1,2,6,32,65,8]
            },
            computed: {
                sortItem:function(){
                    return this.items.sort(paixu)//这里传入自己定义的排序方法
                }
            }
            }
        );
        function paixu(a,b){//自己定义的排序方法
            return a-b;
        }
    </script>

2.2遍历对象

  • 对象循环输出
<body>
    <div id="app">
        <ul>
            <li v-for="student in students">{{student}}</li>
        </ul>
    </div>
    <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                students:[
                    {name:'宫崎英高',age:34},
                    {name:'尾田',age:55},
                    {name:'jojo',age:12},
                    {name:'路德维希',age:89},
                    {name:'劳伦斯',age:3},
                ]
            }    
            }
        );
    </script>
</body>
显示:
{ "name": "宫崎英高", "age": 34 }
{ "name": "尾田", "age": 55 }
{ "name": "jojo", "age": 12 }
{ "name": "路德维希", "age": 89 }
{ "name": "劳伦斯", "age": 3 }

3.v-text和v-html

3.1v-text

有时候网速也比慢,或者js出错时,会出现显示{{message}}这种情况

  • v-text就是解决这个问题的
<body>
    <div id="app">
        <p v-text="message"></p>
    </div>
    <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                message:'very well good hunter'
            }    
            }
        );
    </script>
</body>

3.2v-html

  • 如果message中是html样式,则{{message}}会把标签也显示出来
  • v-html会将其中的标签解释出来
 <div id="app">
        <p>{{message}}</p>
        <p v-html="message"></p>
    </div>
    <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                message:'<span style="color:red;">我是红色</span>'
            }    
            }
        );
    </script>

4.v-on

  • 监听DOM事件

    比如:点击按钮,实现数字自动加1,此时监听鼠标点击事件

    v-on:click可以简写成@click

<body>
    <div id="app">
        <p>{{count}}</p>
        <button v-on:click="add">点我加1</button>
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                count: 10
            },
            methods: {
                add: function () {
                    this.count++
                }
            }
        })
    </script>
</body>
  • 也可以监听键盘事件:比如点击enter键

    代码实现了点击回车,数字自动加1

<body>
    <div id="app">
        <p>{{count}}</p>
        <input type="text" v-on:keyup.enter="add">
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                count: 10
            },
            methods: {
                add: function () {
                    this.count++
                }
            }
        })
    </script>
</body>

5.v-model

5.1绑定输入框

<body>
    <div id="app">
        <p>{{ message }}</p>
        <input type="text" v-model="message">
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                message: 'very well good hunter'
            }
        })
    </script>
</body>

修改data里的message,输入框也会随之改变;相反的,修改输入框内的信息,data里的message也会随之改变。这就是v-model双向绑定的作用

5.2绑定文本域

<body>
    <div id="app">
        <p>{{message}}</p>
        <textarea v-model="message"></textarea>
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                message: 'very well good hunter'
            }
        })
    </script>
</body>

5.3绑定单选框

<body>
    <div id="app">
        <input type="radio" name="gender" value="man" v-model="picked"><input type="radio" name="gender" value="female" v-model="picked">女
        你选择的是:{{picked}}
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                picked: ''
            }
        })
    </script>
</body>

​ 单选框中name属性将多个选项设置进一组,value为你选择后的值

5.4绑定多选框

<body>
    <div id="app">
        <input type="checkbox" id="game" value="bloodborne" v-model="picked">血源诅咒
        <input type="checkbox" id="game" value="monster hunter" v-model="picked">怪物猎人
        <input type="checkbox" id="game" value="dark souls" v-model="picked">黑暗之魂
        你选择的是:{{picked}}
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                picked: []
            }
        })
    </script>
</body>

5.5绑定下拉框

<body>
    <div id="app">
        <select v-model="picked">
            <option value="请选择" disabled></option>
            <option v-for="game in games">{{game}}</option>
        </select>
        你选择的是:{{picked}}
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                picked: [],
                games: ['黑暗之魂', '怪物猎人', '血源诅咒']
            }
        })
    </script>
</body>

6.v-bind

6.1绑定style

将Vue结构体中的data与标签的属性绑定,可以使标签的属性动态变化

<body>
    <div id="app">
        <div v-bind:style="styleColor">v-bind绑定style</div>
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                styleColor: {
                    color: 'green'
                }
            }
        })
    </script>
</body>

7.其他内部指令

  • v-pre :在模板中跳过vue的编译,直接输出原始值。就是在标签中加入v-pre就不会输出vue中的data值了。
<body>
    <div id="app">
        <p v-pre>{{message}}</p>
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                message: 'hello vue'
            }
        })
    </script>
</body>

显示{{message}},而不是hello vue

  • v-once:只对dom渲染一次,后面视为静态资源
  • v-cloak:在vue渲染完指定的整个DOM后才进行显示。它必须和CSS样式一起使用,
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值