首页 > 技术文章 > VUE-02 基本指令

onroad2019 2019-09-06 16:40 原文

公司要用VUE开发前端页面,简单学点命令。

指令:dom元素的行间属性,vue提供了内置的指令,必须v-开头,后面的值均为变量

1、{{msg}}   —— 文本插值

 1     <div id="app"> 
 2         <p>{{ message }}</p> 
 3     </div>
 4 
 5   <script> 
 6         new Vue({
 7       el: '#app',
 8       data: { message: 'Hello World !' } 
 9         })
10   </script> 

2、v-html   —— 绑定HTML代码

 1   <div id="app">
 2     <div v-html="message"></div>
 3   </div>
 4 
 5   <script>
 6     new Vue({
 7       el: '#app',
 8       data: { message: '<h1>Hello World !</h1>' }
 9     })
10   </script>

3、v-model  —— 表单绑定

  指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。

  v-model(表单元素)忽略掉了value,checked,selected,将数据绑定到视图上,视图修改后会影响数据。

  绑定的是value属性值。

 1 <div id="app">
 2     <p>{{ message }}</p>
 3     <input v-model="message">
 4 </div>
 5     
 6 <script>
 7 new Vue({
 8   el: '#app',
 9   data: {
10     message: 'Hello!'
11   }
12 })
13 </script>

4、v-on   ——  事件绑定

  用于监听 DOM 事件,v-on: 可以缩写为@。

   <a @click="doSomething"></a>

 1 <div id="app">
 2     <p>{{ message }}</p>
 3     <button v-on:click="reverseMessage">反转字符串</button>
 4 </div>
 5     
 6 <script>
 7 new Vue({
 8   el: '#app',
 9   data: {
10     message: 'HELLO!'
11   },
12   methods: {
13     reverseMessage: function () {
14       this.message = this.message.split('').reverse().join('')
15     }
16   }
17 })
18 </script>

5、v-bind  —— 绑定属性和属性值

  v-bind 指令被用来响应地更新 HTML 属性

 1 <div id="app">
 2     <pre><a v-bind:href="url">本页面</a></pre>
 3 </div>
 4     
 5 <script>
 6 new Vue({
 7   el: '#app',
 8   data: {
 9     url: 'https://www.cnblogs.com/onroad2019/p/11475665.html'
10   }
11 })
12 </script>

 6、v-if   —— 条件 (添加 / 移除 此标签)

 1 <div id="app">
 2     <p v-if="seen">你看不到我</p>
 3     <template v-if="ok">
 4       <h1>看看看</h1>
 5       <p>我出现了</p>
 6       <p>哈哈哈!</p>
 7     </template>
 8 </div>
 9     
10 <script>
11 new Vue({
12   el: '#app',
13   data: {
14     seen: false,
15     ok: true
16   }
17 })
18 </script>

7、v-else ——  条件

 1 <div id="app">
 2     <div v-if="Math.random() > 0.5">
 3       大于0.5
 4     </div>
 5     <div v-else>
 6       小于0.5
 7     </div>
 8 </div>
 9     
10 <script>
11 new Vue({
12   el: '#app'
13 })
14 </script>

8、v-else-if —— 条件

 1 <div id="app">
 2     <div v-if="code >= 90">
 3       优秀
 4     </div>
 5     <div v-else-if="code >= 85">
 6       良好
 7     </div>
 8     <div v-else-if="code >= 60 ">
 9       及格
10     </div>
11     <div v-else>
12       不及格
13     </div>
14 </div>
15     
16 <script>
17 new Vue({
18   el: '#app',
19   data: {
20     code: 88
21   }
22 })
23 </script>

v-else 、v-else-if 必须跟在 v-if 或者 v-else-if之后。

9、v-show  —— 展示

  v-show 指令来根据条件展示元素

 1 <div id="app">
 2     <h1 v-show="ok">Hello!</h1>
 3 </div>
 4     
 5 <script>
 6 new Vue({
 7   el: '#app',
 8   data: {
 9     ok: true
10   }
11 })
12 </script>

与v-if的区别

v-show:这个页面框架存在,false时,style=display:none

v-if:为false时,这个html将会被移除。

10、v-for   —— 循环语句

  1)、数组循环

 1 <div id="app">
 2   <ol>
 3     <li v-for="aa in names">
 4       {{ aa.name }}
 5     </li>
 6   </ol>
 7 </div>
 8 
 9 <script>
10 new Vue({
11   el: '#app',
12   data: {
13     names: [
14       { name: '小燕子' },
15       { name: '紫薇' },
16       { name: '晴格格' }
17     ]
18   }
19 })
20 </script>

  结果:

 

 

  2)、循环对象值

 1 <div id="app">
 2   <ol>
 3     <li v-for="aa in introduction">
 4       {{ aa}}
 5     </li>
 6   </ol>
 7 </div>
 8 
 9 <script>
10 new Vue({
11   el: '#app',
12   data: {
13     introduction: 
14       { name: '小燕子',position: '格格' ,age:60 }
15   }
16 })
17 </script>

  结果:

 

   3)、多个参数

 1 <div id="app">
 2   <ul>
 3     <li v-for="(value, key, index) in object">
 4      {{ index }}. {{ key }} : {{ value }}
 5     </li>
 6   </ul>
 7 </div>
 8 
 9 <script>
10 new Vue({
11   el: '#app',
12   data: {
13     object: {
14       name: '小燕子',
15       position: '格格',
16       age: 60
17     }
18   }
19 })
20 </script>

  结果:

11、过滤器

  Vue.js 允许你自定义过滤器,被用作一些常见的文本格式化。由"管道符"指示。

 1 <div id="app">
 2   {{ message | capitalize| pinjie('Hello') }}
 3 </div>
 4     
 5 <script>
 6 new Vue({
 7   el: '#app',
 8   data: {
 9     message: 'andy'
10   },
11   filters: {
12     capitalize: function (value) {
13       if (!value) return ''
14       value = value.toString()
15       return value.charAt(0).toUpperCase() + value.slice(1)
16     },
17     pinjie: function (v,arg1){
18         return arg1+' '+v;
19     }
20     
21   }
22 })
23 </script>

结果:  Hello Andy

 

推荐阅读