Vue之基本语法

二、基本语法

目录:v-bind、v-if、v-else-if、v-else、v-for、v-on

1.v-bind

已经成功创建了第一个Vue应用。看起来这跟渲染一个字符串模板非常类似,但是Vue在背后做了大量的工作。现在数据和DOM已经被建立了关联,所有东西都是响应式的。在控制台操作对象属性,界面可以实时更新。
可以使用v-bind来绑定元素特性。

<!DOCTYPE html>
<html xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="UTF-8">
  <title>v-bind</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
</head>
<body>
<div id="app">
  <span v-bind:title="message">
    鼠标悬停几秒钟查看此处动态绑定的时间信息
  </span>
</div>
<script type="text/javascript">
  var app = new Vue({
    el: '#app',
    data: {
      message: '页面加载时间:' + new Date().toLocaleString()
    }
  })
</script>
</body>
</html>

像v-bind等被成为指令。指令带有前缀v-,以表示它们是Vue提供的特殊特性。它们会在渲染的DOM上应用特殊的响应式行为。在这里该指令的意思是:将这个元素节点的title特性和Vue实例的message属性保持一致。
如果再次打开浏览器的JavaScript控制台,输入app.message=‘新消息’,就会再一次看到这个绑定了title特性的HTML已经进行了更新。

2.v-if,v-else

条件判断语句

  • v-if
  • v-else
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>v-if,v-else</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
</head>
<body>
<div id="vue">
  <h1 v-if="ok">YES</h1>
  <h1 v-else>NO</h1>
</div>
<script type="text/javascript">
  var vm = new Vue({
    el: '#vue',
    data: {
      ok: true
    }
  });
</script>
</body>
</html>

测试:①在浏览器上运行,打开控制台。
②在控制台输入vm.ok=false,然后回车,会发现浏览器中显示的内容会直接变成NO。
注:使用v-*属性绑定数据是不需要双花括号包裹的。

3.v-else-if

  • v-if
  • v-else-if
  • v-else
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>v-else-if</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
</head>
<body>
<div id="vue">
  <h2 v-if="type === 'A' ">A</h2>
  <h2 v-else-if="type === 'B' ">B</h2>
  <h2 v-else-if="type === 'C' ">C</h2>
  <h2 v-else>who</h2>
</div>
<script type="text/javascript">
  var vm = new Vue({
    el: '#vue',
    data: {
      type: 'A'
    }
  });
</script>
</body>
</html>

测试:观察在控制台分别输入vm.type=‘B’、‘C’、'D’的变化。
注:===三个等号在JS中表示绝对等于(就是数据与类型都要相等)。

4.v-for

格式说明

<div id="vue">
  <li v-for="item in items">
    {{ item.message }}
  </li>
</div>

注:items是数组,item是数组元素迭代的别名。之后学习的Thymeleaf模板引擎的语法与之十分的相似。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>v-for</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
</head>
<body>
<div id="vue">
  <li v-for="item in items">
    {{ item.message }}
  </li>
</div>
<script type="text/javascript">
  var vm = new Vue({
    el: '#vue',
    data: {
      //items数组
      items: [
        {message: '前端'},
        {message: 'Vue'},
        {message: 'Java'}
      ]
    }
  });
</script>
</body>
</html>

测试:在控制台输入vm.items.push({message: ‘运维’}),尝试追加一条数据,会发现浏览器中显示的内容会增加一条 运维。

5.v-on

监听事件
事件有Vue的事件和前端页面本身的一些事件。下面的click是Vue的事件,可以绑定到Vue中的methods中的方法事件。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>v-on</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
</head>
<body>
<div id="vue">
  <!--在这里使用了v-on绑定了click事件,并指定了名为sayHi的方法-->
  <button v-on:click="sayHi">点我</button>
</div>
<script type="text/javascript">
  var vm = new Vue({
    el: '#vue',
    data: {
      message: 'Hello World'
    },
    //方法必须定义在Vue实例的methods对象中
    methods: {
      sayHi: function (e) {
        //this在方法里指向Vue实例
        alert(this.message);
      }
    }
  });
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值