Vue.js学习笔记 第一篇 数据绑定

双花括号文本插值

先来个最简单的例子,看完之后立马会用Vue了,是不是很有成就感

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <!-- 引用官网的Vue.js库 -->
    <script src="https://unpkg.com/vue"></script>
</head>
<body>
    <!-- HTML部分 -->
    <div id="app-1">
        <!-- “mustache” 语法(双花括号)的文本插值 -->
        <span>{{ content }}</span>
    </div>
    <!-- JS部分 -->
    <script type="text/javascript">
        var vm1 = new Vue({
            el: '#app-1',  //关联元素
            data: {
                content: 'Hello, TanSea!'  //变量赋值
            }
        })
    </script>
</body>
</html>

https://unpkg.com/vue是官方的地址,直接引用能随时保持使用的是最新版本,但是缺点是外国的网站,访问速度有点慢。当然也可以下载到本地来使用

这里Vue对象实例化仅仅给了2个参数,el(元素)和data(数据),其他的参数在后面的笔记中会说明

在浏览器的控制台输入vm1.content = 'Hello, World',对变量进行重新赋值,页面上的值也跟着一起变更。如果只需要第一次绑定,不要后续变更,可以使用v-once指令

给span标签添加v-once指令

<!-- HTML部分 -->
<div id="app-1">
    <!-- 当变量发生变更时,内容不会随着更新 -->
    <span v-once>{{ content }}</span>
</div>

Vue的所有指令约定都是以v-开头,包括之后的自定义指令也推荐使用这种命名习惯

原始HTML

<!-- HTML部分 -->
<div id="app-2">
    <span v-html="rawHtml"></span>
</div>
<!-- JS部分 -->
<script type="text/javascript">
    var vm2 = new Vue({
        el: '#app-2',
        data: {
            rawHtml: '<div style="color: red">Hello, TanSea!</div>'
        }
    })
</script>

v-html指令直接插入原始HTML,直接插入HTML代码容易受到XSS攻击,不建议使用

属性

在HTML属性中无法使用“mustache” 语法了,需要使用v-bind指令,这也是Vue使用得最多的指令

<!-- HTML部分 -->
<div id="app-3">
    <a v-bind:href="url" v-bind:target="target">双子宫殿</a>
</div>
<!-- JS部分 -->
<script type="text/javascript">
    var vm3 = new Vue({
        el: '#app-3',
        data: {
            url: 'http://www.tansea.cn',
            target: '_blank'
        }
    })
</script>

使用v-bind指令绑定HTML属性,给HTML属性插值

JavaScript表达式

<!-- HTML部分 -->
<div id="app-4">
    <span :id="'site-' + (id + 1)">{{ isVisible ? '我是可见的' : '我是隐藏的' }}</span>
</div>
<!-- JS部分 -->
<script type="text/javascript">
    var vm4 = new Vue({
        el: '#app-4',
        data: {
            id: 1,
            isVisible: true
        }
    })
</script>

这里,我们看到了一个陌生的东西:id,他其实就是v-bind:id的简写方式

通过表达式的计算,span标签最终的结果是

<span id="site-2">我是可见的</span>

Vue目前只支持单条表达式,所以以下的示例都无法运行

<!-- 这是语句,不是表达式 -->
{{ var a = 1 }}
<!-- 流控制也无法运行,请使用三元表达式 -->
{{ if (ok) { return message } }}

如果熟悉拉姆达表达式的话,这一块的内容就很好理解了

双向绑定

双向绑定是Vue的一个最主要的功能,他能很方便的实现实时预览的效果

<!-- HTML部分 -->
<div id="app-5">
    <p>{{ content }}</p>
    <input v-model:value="content">
</div>
<!-- JS部分 -->
<script type="text/javascript">
    var vm5 = new Vue({
        el: '#app-5',
        data: {
            content: 'TanSea'
        }
    })
</script>

 将input标签的值属性双向绑定到content上,当input标签的值属性发生改变时,p标签也会同步发生改变

posted @ 2017-12-18 11:38  TanSea  阅读(367)  评论(0编辑  收藏  举报