读Vue.js实战第五、六章

内置指令

  • v-cloak 它会在Vue实例结束编译时从绑定的HTML元素上移除,经常和css的display:none配合使用;
   <div v-cloak>{{ message }}</div>
  • 可以用来隐藏 双括号配合css使用不会闪动;
  • v-once 作用是定义它的元素或者组件只渲染一次包括元素或者组件的所有子节点。首次渲染后,不再随数据的变化重新渲染;

条件渲染指令

  • 与js中的条件语句if、else、else if 类似
  <div id="app">
            <div v-once>
                <p v-if="status === 1">当status为1时显示改行</p>
                <p v-else-if="status === 2">当status为2时显示改行</p>
                <p v-else>否则显示改行</p>
            </div>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue"></script>
        <script>
            var app = new Vue({
                el:'#app',
                data:{
                    message: '这是一段文本',
                    status: 2
                }
            });
        </script>
 <div id="app">
            <template v-if="type === 'name'">
                <label for="">用户名</label>
                <input type="text" placeholder="输入用户名" key="name-input">
                <!--<input type="text" placeholder="输入用户名">-->
            </template>
            <template v-else>
                <label for="">邮箱</label>
                <input type="text" placeholder="输入邮箱" key="mail-input">
                <!--<input type="text" placeholder="输入邮箱">-->
            </template>
            <button @click="handleToggleClick">切换输入类型</button>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue"></script>
        <script>
            var app = new Vue({
                el:'#app',
                data:{
                    type: 'name'
                },
                methods:{
                    handleToggleClick:function () {
                        this.type = this.type === 'name' ? 'mail' : 'name';
                    }
                }
            });
        </script>
  • 当加上key后,切换类型时内容会被删除;

v-show不能再template上使用

条件渲染V-for

<div id="app">
    <ul>
        <li v-for="book in books">{{book.name}}</li>
    </ul>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    new Vue({
        el:'#app',
        data:{
            books:[
                {name:'<<vue.js实战>>'},
                {name:'js语言精髓'},
                {name:'js高级程序设计'}
            ]
        }
    })
</script>
  • v-for也可以用在内置标签template上;
<div id="app">
            <ul>
                <template v-for="book of books">
                    <li>书名:{{book.name}}</li>
                    <li>书名:{{book.author}}</li>
                </template>
            </ul>

        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue"></script>
        <script>
            var app = new Vue({
                el:'#app',
                data:{
                    books:[
                        {
                          name:'vue实战',
                          author:'梁晶'
                        },
                        {
                            name:'java语言精髓',
                            author:'dc'
                        },
                        {
                            name:'js',
                            author:'c.zakas'
                        }
                    ]
                }
            });
        </script>
  • v-for还可以迭代整数

数组跟新方法

push()、pop()、shift()、unshift()、splice()、sort()、reverse()//调用这些方法会同步视图数据,而filter、concat、slice不会同步视图数据!
  • 如果需要设置数组的长度可用app.books.splice来解决
  • 如果添加数组可用vue.set() || app.set() || this.$set() 解决

    第六章表单与V-MODEL

  • v-model指令是对数据的双向绑定;

  • 如果需要数据拼音阶段实时更新则需要用@input来替代v-model
<div id="app" v-cloak>
            <textarea @input="handleInput" placeholder="输入..." ></textarea>
            <input type="text" @input="handleInput" placeholder="第二行输入">
            <p>输入的内容是:</p>
            <p style="white-space: pre">{{ message }}</p>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue"></script>
        <script>
            var app = new Vue({
                el:"#app",
                data:{
                    message:''
                },
                methods:{
                    handleInput:function (e) {
                        this.message = e.target.value;
                        console.log(e.target);
                    }
                }
            });
        </script>

-]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值