Vue的指令语法、双向绑定、el和data的另一种写法、MVVM模型

1. 指令语法

用于解析标签(包括:标签属性、标签体内容、绑定事件…)。Vue中有很多的指令,且形式都是:v-xxxx,此处我们只是拿v-bind举个例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javaScript" src="../js/vue.js"></script>
</head>
<body>

<div id="root">
    <h1>指令语法</h1>
    <!-- 字符串中引用的是JS的表达式 -->
    <a v-bind:href="web.url" v-bind:web-name="web.name.toUpperCase()">点我跳转到{{web.name}}</a>
    <!-- 简写方式 -->
    <a :href="web.url" v-bind:web-name="web.name.toUpperCase()">点我跳转到{{web.name}}</a>
</div>

<script type="text/javascript">

    new Vue({
        el:'#root',
        data:{
            web:{
                name:'baidu',
                url:'http://www.baidu.com'
            }
        }
    })

</script>

</body>
</html>

打开页面如下。点击就可以跳转到baidu
指令语法

这一部分的网页源代码如下:
网页源代码

1.1 双向绑定

  1. 数据不仅能从data流向页面,还可以从页面流向data
  2. v-model只能应用在表单类元素(输入类元素)上,如input、select等
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javaScript" src="../js/vue.js"></script>
</head>
<body>

<div id="root">
    双向数据绑定:<input type="text" v-model:value="name"><br/>
    <!-- 可以简写为 v-model,因为v-model默认收集的就是value值 -->
    双向数据绑定:<input type="text" v-model="name"><br/>
</div>

<script type="text/javascript">

    new Vue({
        el:'#root',
        data:{
            name:'hello'
        }
    })

</script>

</body>
</html>

运行,输入框都显示hello,在下面的输入框输入12345,上面的输入框也同步显示12345
双向绑定效果

2. el和data的另一种写法

  • el可以通过vm.$mount来实现。比如可以通过setTimeout来延迟挂载
  • data可以通过function函数来获取数据
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javaScript" src="../js/vue.js"></script>
</head>
<body>

<div id="root">
    <h1>你好,{{name}}</h1>
</div>

<script type="text/javascript">


    const vm = new Vue({
        // data的函数式写法
        // 简写: data(){。不能写成data:()=>{,因为箭头函数的this不是vue实例而是Window
        data:function(){
            // 此处的this是Vue实例对象。函数由vue自动调用
            console.log('@@@',this)
            return{
                name:'尚硅谷'
            }
        }
    })

    // 定时设置一秒后,将容器和vue实例绑定
    setTimeout(() => {
        // el的另一种写法
        vm.$mount('#root')
    }, 1000)


</script>

</body>
</html>

3. MVVM模型

Vue的设计参考了MVVM模型。Vue的MVVM模型如下

  1. M:模型(Model) :对应data中的数据
  2. V:视图(View) :模板
  3. VM:视图模型(ViewModel) : Vue实例对象

MVVM模型

所以。vm身上所有的属性及Vue原型上所有属性,在Vue模板中都可以直接使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值