学习Vue竟如此简单(接上)

列表渲染

v-for :我们用 v-for 指令根据一组数组的选项列表进行渲染。v-for 指令需要使用 item in items 形式的特殊语法,items 是源数据数组并且 item 是数组元素迭代的别名

为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一的 key,不建议使用index作为key的值(只要key的值唯一就行)

演示:

<body>
    <div id="app">
        <ul>
            <li v-for="(item,index) in list" :key="item">{{item}}-{{index+1}}</li>
        </ul>
    </div>
    <script>
        Vue.createApp({
            data(){
                return {
                    list:["vue","react","angular","js"]
                }
            }
        }).mount("#app")
    </script>
</body>

结果: 

 你也可以用 v-for 来遍历一个对象的 property。如:

<body>
    <div id="app">
        <div v-for="(value,key) in obj" :key="key">{{key}}:{{value}}</div>
    </div>
    <script>
        Vue.createApp({
            data(){
                return {
                    obj:{title:"Vue3入门",state:"轻松",pdate:"2022-02-24"}
                }
            }
        }).mount("#app")
    </script>
</body>

结果:

 v-for 也可以接受整数。在这种情况下,它会把模板重复对应次数 如:

<div v-for="n in 10" :key="n">{{ n }} </div>

注意:我们不推荐在同一元素上使用 v-if 和 v-for可以把 v-for 移动到 <template> 标签中来修正:

<body>
    <div id="app">
        <template v-for="item in 10">
            <p v-if="item%2===0">{{item}}</p>
        </template>
    </div>
    <script>
        Vue.createApp({
            data(){
                return {}
            }
        }).mount("#app")
    </script>
</body>

结果:

 监听事件

我们可以使用 v-on 指令 (通常缩写为 @ 符号) 来监听 DOM 事件,并在触发事件时执行一些 JavaScript。

<button @click="counter++">{{counter}}</button>
<button v-on:click="counter--">{{counter}}</button>


Vue.createApp({
  data() {
    return {   counter: 1   }
  }
}).mount('#app')

许多事件处理逻辑会更为复杂,所以直接把 JavaScript 代码写在 v-on 指令中是不可行的。因此 v-on 还可以接收一个需要调用的方法名称

<body>
    <div id="app">
        <!-- <button v-on:click="num++">{{num}}</button>
        <button @click="num++">{{num}}</button> -->
        <p>
            <button @click="say">点我</button>
        </p>
    </div>
    <script>
        Vue.createApp({
            data() {
                return {
                    num: 1
                }
            },
            methods: {
                say(e) {
                    console.log(e, e.target);
                    alert("别点了,别点了,再点就没了")
                }
            }
        }).mount("#app")
    </script>
</body>

结果: 

 内联处理器中的方法:除了直接绑定到一个方法,也可以在内联 JavaScript 语句中调用方法

<body>
    <div id="app">
        <p>
            <button @click="say('叫你点你就点啊',$event)">点我</button>
        </p>
        <p>
            <button @click="say(num,$event)">{{num}}</button>
        </p>
    </div>
    <script>
        Vue.createApp({
            data() {
                return {
                    num: 1
                }
            },
            methods: {
                say(msg,e) {
                    alert(msg);
                    this.num++;
                    console.log(e,e.target);
                }
            }
        }).mount("#app")
    </script>
</body>

结果:

 总结:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值