Vue基础(二)

双向绑定

model变了,view跟着改变

v-bind指令,绑定属性值

【v-】开头的属性都是指令属性,是vue提供的特殊特性(vue自定义的标签)。它们会渲染DOM上应用特殊的响应式行为。

【v-bind】指的是绑定属性,将标签属性【title】的值与View Model的值绑定起来,不用写【{{message}}】这种模板了。因为有时候需要将model的信息放到标签的属性中,这样使用【v-bind】属性更好。

注意!【{{message}}】只是输出显示model中的数据message,而【v-bind:title=“message”】则可以将model中的数据message作为属性的值进行绑定。

  • 显示输出,使用【{{message}}】
  • 作为属性值,使用属性【v-bind:title=“message”】进行绑定

例如:

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <span v-bind:title="message">
                停留在这里查看!
            </span>
        </div>


        <script>
            var vm1 = new Vue({
                el: "#app",
                data: {
                    message: "hello vue!"
                }
            })
        </script>
    </body>
</html>

在这里插入图片描述

前端除了绑定事件外,其余的逻辑就是判断与循环了,所以还有两个标签【v-if、v-else】【v-for】

注意!绑定标签中的下级标签仍具有作用域,所以需要一个外部div去绑定vm,在div内部进行相应的逻辑操作!

v-if、v-else-if、v-else指令判断值

有了这个vue标签属性就可以根据后台model的数据不同,显示不同的前台不同的信息。这一点更能体现出ViewModel是连接View与Model的桥梁!

值作为判断条件,是否显示标签

例如:

<html lang="en" xmlns:v-if="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <h1 v-if="flag">{{message}}</h1>
            <h1 v-else>{{fail}}</h1>
        </div>

        <script>
            var vm1 = new Vue({
                el: "#app",
                data: {
                    flag: true,
                    message: "hello,vue again",
                    fail: "No!I don't want see you!"
                }
            })
        </script>
        
    </body>
</html>

在这里插入图片描述
在这里,使用一个【div】去绑定【vm】,然后其标签的内部就可以使用【vue的属性】也可以使用【model的数据】了!

表达式作为判断条件,是否显示标签
<!DOCTYPE html>
<html lang="en" xmlns:v-if="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <h1 v-if="flag === false">{{message}}</h1>
            <h1 v-else>{{fail}}</h1>
        </div>

        <script>
            var vm1 = new Vue({
                el: "#app",
                data: {
                    flag: true,
                    message: "hello,vue again",
                    fail: "No!I don't want see you!"
                }
            })
        </script>   
    </body>
</html>

如果【model中的属性flag】绝对等于 false,那么输出【model中的属性message】。但是在这里model中的属性【flag】是 true,所以以上代码会输出【model中的属性fail】的值。
在这里插入图片描述

v-for指令迭代数据

<!DOCTYPE html>
<html lang="en" xmlns:v-for="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>

        <div id="app">
            <!-- "(item, index) in items"这样可以获取值与下标 -->
            <li v-for="item in items">
                {{item.message}}
            </li>
        </div>

        <script>
            var vm1 = new Vue({
                el: "#app",
                data: {
                    items: [
                        {message: "student1"},
                        {message: "student2"}
                    ]
                }
            })
        </script>
    </body>
</html>

遍历循环【model中的属性items】将【items中的数据输出】
在这里插入图片描述
注意!for迭代是循环有指令的那个标签!

v-on指令绑定事件

如果你不是用vue进行事件绑定,那么你需要写一个点击事件的函数,函数中修改标签的值(操作DOM元素)。操作DOM元素是很卡的。

所以Vue推出了自己的事件绑定【v-on】

v-on是vm的一个操作,当用户点击按钮后直接修改model的数据,model的数据改变了跟着view的显示数据也会改变。这都是vm在中间做桥梁的效果!

v-on直接操作数据
<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <button v-on:click="num = num + 1">点我加一</button>
            <h1>{{num}}</h1>
        </div>


        <script>
            var vm1 = new Vue({
                el: "#app",
                data: {
                    num: 0
                }
            })
        </script>
        
    </body>
</html>
v-on通过回调函数操作数据
<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <button v-on:click="addOne">点我加一</button>
            <h1>{{num}}</h1>
        </div>


        <script>
            var vm1 = new Vue({
                el: "#app",
                data: {
                    num: 0
                },
                methods: {
                    addOne: function () {
                        // this表示vm1对象
                        this.num += 1
                        console.log(this.num)
                    }
                }
            })
        </script>
        
    </body>
</html>

view变了,model跟着改变

业务场景:

假如有一个【input】标签,它的【placeholder】是【model】的数据。现在点击向【input】中输入数据,【model】中的数据需要跟着改变,在请求时发送【model】才有效!

v-model指令修改model中的数据

可捕捉input、textarea、radio、select标签的值

input:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <!-- 显示model中的数据 -->
            <h1>{{message}}</h1>
            <input type="text" v-model="message">
        </div>

        <script>
            var vm1 = new Vue({
                el: "#app",
                data: {
                    message: ""
                }
            })
        </script>
    </body>
</html>

textarea:

<body>
        <div id="app">
            <textarea cols="10" rows="10" v-model="message"></textarea>

            <p>
                {{message}}
            </p>
        </div>

        <script>
            var vm1 = new Vue({
                el: "#app",
                data: {
                    message: ""
                }
            })
        </script>
    </body>

redio:

<body>
        <div id="app">
            <input type="radio" name="sex" value="" v-model="message"><input type="radio" name="sex" value="" v-model="message"><p>
                {{message}}
            </p>
        </div>

        <script>
            var vm1 = new Vue({
                el: "#app",
                data: {
                    message: ""
                }
            })
        </script>
    </body>

select:

<body>
        <div id="app">
            <select name="sex" v-model="message">
                <option value=""></option>
                <option value=""></option>
                <option value="人妖">人妖</option>
            </select>

            <p>
                {{message}}
            </p>
        </div>

        <script>
            var vm1 = new Vue({
                el: "#app",
                data: {
                    message: ""
                }
            })
        </script>
    </body>

Vue组件

组件其实就相当于一个dom节点(一个dom节点可以含有多个子节点,这样将这个dom节点作为一个模板可以减少代码量)给抽出来成了一个组件(模板)了。

可以使用组件自定义标签

定义一个组件

例如:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <qiu></qiu>
            <qiu></qiu>
        </div>

        <script>
            Vue.component("qiu", {
                template: '<li>Hello</li>'
            })

            var vm1 = new Vue({
                el: "#app"
            })
        </script>
    </body>
</html>

这就是【.vue】文件中的【template】的原理

组件中使用model的数据

再难一些:组件循环访问【data】中的数据

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <qiu v-for="item in items" v-bind:q="item"></qiu>
        </div>

        <script>
            Vue.component("qiu", {
                props: ['q'],
                template: '<li>{{q}}</li>'
            })

            var vm1 = new Vue({
                el: "#app",
                data: {
                    items: ['1', '2', '3']
                }
            })
        </script>
    </body>
</html>

解释:组件是不能直接访问model中的数据的,它只能通过标签==【v-for】循环获取==,通过绑定【q】与【item】传入数据到【component】中的【props】(你可以理解为函数传值,item是实参,q是形参

就算data中不是列表只传入一个值,也需要props进行传值。这就是组件的一个使用方法!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue基础Web项目模板下载非常简单,可以按照以下步骤进行: 第一步,打开浏览器,访问Vue官方网站(https://cn.vuejs.org/)。 第二步,点击页面上方的“文档”按钮,进入Vue的文档页面。 第三步,在文档页面的左侧导航栏中,找到“起步 - 快速原型”这一部分。 第四步,在“起步 - 快速原型”部分中,你可以看到一个“下载vue-cli”按钮,点击它。 第五步,你将被带到Vue CLI的GitHub页面,这是Vue的一个脚手架工具,用于快速搭建Vue项目。 第六步,滚动页面,找到一个名为“vue-cli 3.x”的链接,点击它。 第七步,你将跳转到Vue CLI 3.x的npm页面,其中包含有关Vue CLI的详细信息和用法。 第八步,翻滚页面,你可以看到一个类似于“npm install -g @vue/cli”的命令,这是用于全局安装Vue CLI的命令。 第九步,打开终端,输入上述命令并执行,等待安装完成。 第十步,安装完成后,在终端中输入“vue create 项目名称”,其中“项目名称”是你想要创建的项目的名称。 第十一步,按照终端中的提示,选择需要的特性、配置和插件,然后等待项目创建完成。 第十二步,项目创建完成后,你就可以在本地磁盘中找到你的项目文件夹,里面包含了一个基础Vue Web项目模板。 总结起来,下载Vue基础Web项目模板只需要通过Vue CLI工具进行项目的创建和初始化,然后你就可以在本地磁盘中找到你的项目文件夹了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值