Vue入门(二)

Vue实例中的数据,事件与方法

数据:

        当一个 Vue 实例被创建时,它将 data 对象中的所有的 property 加入到 Vue 的响应式系统中。当这些 property 的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。 

        data: {} 中可以配置任意的数据名字比如 (number) 

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="utf-8">
        <title>Vue实例中的数据,事件与方法</title>
        <!--引入 vue.js -->
        <script src="/static/js/vue.js"></script>
    </head>
    <body>
        <div id="root">
            <h1>{{number}}</h1><!-- 插值表达式 -->
        </div>
        <script>
            new Vue({
                el: "#root",
                data: {
                    number: 123
                }
            })
        </script>
    </body>
</html>

除了上面的写法外,还有其他写法比如使用 v-textv-html 指令:

        指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

v-text
v-text 主要用来更新 textContent ,可以等同于JS的text属性。

    <body>
        <div id="root">
            <h1 v-text="number"></h1>
        </div>
        <script>
            new Vue({
                el: "#root",
                data: {
                    number: 123
                }
            })
        </script>
    </body>

v-html
双大括号的方式 v-text 指令会将数据解释为纯文本,而非HTML。为了输出真正的HTML,可以用 v-html 指令。它等同于JS的innerHtml属性。

    <body>
        <div id="root">
            <h1 v-html="number"></h1>
        </div>
        <script>
            new Vue({
                el: "#root",
                data: {
                    number: 123
                }
            })
        </script>
    </body>

插值表达式、v-text 和 v-html 的比较: 

    <body>
        <div id="root">
            <div>{{content}}</div>
            <div v-text="content"></div>
            <div v-html="content"></div>
        </div>
        <script>
            new Vue({
                el: "#root",
                data: {
                    content: "<h1>hello</h1>"
                }
            })
        </script>
    </body>

页面效果:

事件与方法:

监听事件:

可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

注意:不要使用箭头函数,比如下面代码中的 :v-on:click="()=>{alert(123)}",否则会报错

官网也有提示:

	<body>
		<div id="root">
			<div v-on:click="()=>{alert(123)}">{{content}}</div>
		</div>
		<script>
			new Vue({
				el: "#root",
				data: {
					content: "hello"
				}
			})
		</script>
	</body>

事件处理方法:

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

下面代码实现的功能是点击 world 后显示 hello。

    <body>
        <div id="root">
            <!-- handleClick 是在 Vue实例 中的 methods里定义的方法名 -->
            <div v-on:click="handleClick">{{string}}</div>
        </div>
        <script>
            new Vue({
                el: "#root",
                data: {
                    string: "world"
                },
                methods: {
                    handleClick: function () {
                        // this.string 是 data 中 string
                        this.string = "hello"
                    }
                }
            })
        </script>
    </body>

缩写:

官方说明:v- 前缀作为一种视觉提示,用来识别模板中 Vue 特定的 attribute。当你在使用 Vue.js 为现有标签添加动态行为 (dynamic behavior) 时,v- 前缀很有帮助,然而,对于一些频繁用到的指令来说,就会感到使用繁琐。同时,在构建由 Vue 管理所有模板的单页面应用程序 (SPA - single page application) 时,v- 前缀也变得没那么重要了。因此,Vue 为 v-bind 和 v-on 这两个最常用的指令,提供了特定简写:

    <body>
        <div id="root">
            <!-- handleClick 是在 Vue实例 中的 methods里定义的方法名 -->
            <div v-on:click="handleClick">{{string}}</div><!--完整写法 -->
            <div @click="handleClick"><h1 v-text="string"></h1></div><!-- 缩写 -->
        </div>
        <script>
            new Vue({
                el: "#root",
                data: {
                    string: "world"
                },
                methods: {
                    handleClick: function () {
                        // this.string 是 data 中 string
                        this.string = "hello"
                    }
                }
            })
        </script>
    </body>

 视频学习地址: 课程介绍,vue2.5入门 教程-慕课网 (imooc.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值