“Vue 小黑记事本 隐藏”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
(建立内容为“https://www.bilibili.com/video/BV12J411m7MG/?p=23”的新页面)
 
 
第1行: 第1行:
 
https://www.bilibili.com/video/BV12J411m7MG/?p=23
 
https://www.bilibili.com/video/BV12J411m7MG/?p=23
 +
 +
=== 实现功能分析 ===
 +
 +
# 没有数据时,隐藏元素(<u>v-show</u> <u>v-if</u> <u>数组非空</u>)
 +
 +
=== 完整代码 ===
 +
<syntaxhighlight lang="html">
 +
<html>
 +
    <head>
 +
        <meta charset="UTF-8">
 +
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
 +
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
 +
        <title>v-model 指令</title>
 +
    </head>
 +
    <body>
 +
       
 +
        <!--主体区域-->
 +
        <section id="todoapp">
 +
            <!--输入框-->
 +
            <header class="header">
 +
                <h1>小黑记事本</h1>
 +
                <input autofocus="autofocus" autocomplete="off" placeholder="请输入任务" class="new-todo" v-model="inputValue" @keyup.enter="add"/>
 +
            </header>
 +
 +
            <!--列表区域-->
 +
            <section class="main">
 +
                <ul class="todo-list">
 +
                    <li class="todo" v-for="(item, index) in list">
 +
                        <div class="view">
 +
                            <span class="index">{{ index+1 }}</span>
 +
                            <label>{{ item }}</label>
 +
                            <button class="destroy" @click="remove(index)">x</button>
 +
                        </div>
 +
                    </li>
 +
                </ul>
 +
            </section>
 +
 +
            <!--统计和清空-->
 +
            <footer class="footer" v-show="list.length>0">
 +
                <span class="todo-count" v-if="list.length > 0">
 +
                    <strong>{{ list.length }}</strong> items left
 +
                </span>
 +
                <button v-show="list.length>0" class="clear-completed" @click="clear">
 +
                    Clear
 +
                </button>
 +
            </footer>
 +
        </section>
 +
 +
        <!--底部-->
 +
        <footer class="info"></footer>
 +
 +
        <!-- 开发环境版本,包含了有帮助的命令行警告 -->
 +
        <script src="vue.js"></script>
 +
       
 +
        <script>
 +
            var app = new Vue({
 +
                el:"#todoapp",
 +
                data: {
 +
                    message:"hello world",
 +
                    list:[
 +
                        "写代码","吃饭饭","睡觉觉"
 +
                    ],
 +
                    inputValue:"好好学习,天天向上"
 +
                },
 +
                methods:{
 +
                    add: function(){
 +
                        this.list.push(this.inputValue);
 +
                    },
 +
                    remove: function(index){
 +
                        console.log("删除");
 +
                        console.log(index);
 +
                        this.list.splice(index, 1);
 +
                    },
 +
                    clear: function() {
 +
                        this.list = [];
 +
                    }
 +
                }
 +
            })
 +
        </script>
 +
 +
    </body>
 +
</html>
 +
</syntaxhighlight>
 +
 +
=== 记事本小程序总结 ===
 +
 +
* 列表结构可以通过 <u>v-for</u> 指令结合数据生成
 +
* <u>v-on</u> 结合事件修饰符可以对事件进行限制,比如 <u>.enter</u>
 +
* <u>v-on</u> 在绑定事件时可以传递自定义参数
 +
* 通过 <u>v-model</u> 可以快速地设置和获取表单元素的值
 +
* 基于数据的开发方式

2023年8月9日 (三) 03:46的最新版本

https://www.bilibili.com/video/BV12J411m7MG/?p=23

实现功能分析

  1. 没有数据时,隐藏元素(v-show v-if 数组非空

完整代码

<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>v-model 指令</title>
    </head>
    <body>
        
        <!--主体区域-->
        <section id="todoapp">
            <!--输入框-->
            <header class="header">
                <h1>小黑记事本</h1>
                <input autofocus="autofocus" autocomplete="off" placeholder="请输入任务" class="new-todo" v-model="inputValue" @keyup.enter="add"/>
            </header>

            <!--列表区域-->
            <section class="main">
                <ul class="todo-list">
                    <li class="todo" v-for="(item, index) in list">
                        <div class="view">
                            <span class="index">{{ index+1 }}</span>
                            <label>{{ item }}</label>
                            <button class="destroy" @click="remove(index)">x</button>
                        </div>
                    </li>
                </ul>
            </section>

            <!--统计和清空-->
            <footer class="footer" v-show="list.length>0">
                <span class="todo-count" v-if="list.length > 0">
                    <strong>{{ list.length }}</strong> items left
                </span>
                <button v-show="list.length>0" class="clear-completed" @click="clear">
                    Clear
                </button>
            </footer>
        </section>

        <!--底部-->
        <footer class="info"></footer>

        <!-- 开发环境版本,包含了有帮助的命令行警告 -->
        <script src="vue.js"></script>
        
        <script>
            var app = new Vue({
                el:"#todoapp",
                data: {
                    message:"hello world",
                    list:[
                        "写代码","吃饭饭","睡觉觉"
                    ],
                    inputValue:"好好学习,天天向上"
                },
                methods:{
                    add: function(){
                        this.list.push(this.inputValue);
                    },
                    remove: function(index){
                        console.log("删除");
                        console.log(index);
                        this.list.splice(index, 1);
                    },
                    clear: function() {
                        this.list = [];
                    }
                }
            })
        </script>

    </body>
</html>

记事本小程序总结

  • 列表结构可以通过 v-for 指令结合数据生成
  • v-on 结合事件修饰符可以对事件进行限制,比如 .enter
  • v-on 在绑定事件时可以传递自定义参数
  • 通过 v-model 可以快速地设置和获取表单元素的值
  • 基于数据的开发方式