A-A+

vue.js基础指令列举及总结

2017年05月17日 HTML, javascript, 前端技术 暂无评论 阅读 16 views 次

1.v-bind 绑定dom元素属性

<div id="app-2">

  <span v-bind:title="message">

    鼠标悬停几秒钟查看此处动态绑定的提示信息!

  </span>

</div>
var app2 = new Vue({

  el: '#app-2',

  data: {

    message: '页面加载于 ' + new Date()

  }

})

2.v-if 条件 如果后面的值是true则显示。

根据表达式的值的真假条件渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。如果元素是 <template> ,将提出它的内容作为条件块。

当条件变化时该指令触发过渡效果。

<div id="app-3">

  <p v-if="seen">现在你看到我了</p>

</div>
var app3 = new Vue({

  el: '#app-3',

  data: {

    seen: true

  }

})

3.v-for 循环  可以绑定数组的数据来渲染一个项目列表

<div id="app-4">

  <ol>

    <li v-for="todo in todos">  

      {{ todo.text }}

    </li>

  </ol>

</div>
var app4 = new Vue({

  el: '#app-4',

  data: {

    todos: [

      { text: '学习 JavaScript' },

      { text: '学习 Vue' },

      { text: '整个牛项目' }

    ]

  }

})

4.v-on 指令绑定一个事件监听器,通过它调用我们 Vue 实例中定义的方法

<div id="app-5">

  <p>{{ message }}</p>

  <button v-on:click="reverseMessage">逆转消息</button>

</div>
var app5 = new Vue({

  el: '#app-5',

  data: {

    message: 'Hello Vue.js!'

  },

  methods: {

    reverseMessage: function () {

      this.message = this.message.split('').reverse().join('')

    }

  }

})

5.v-model 实现表单输入和应用状态之间的双向绑定

<div id="app-6">

  <p>{{ message }}</p>

  <input v-model="message">

</div>
var app6 = new Vue({

  el: '#app-6',

  data: {

    message: 'Hello Vue!'

  }

})

6.Vue.component  注册组件  

// 定义名为 todo-item 的新组件

Vue.component('todo-item', {

  template: '<li>这是个待办项</li>'

})

<ol>

  <!-- 创建一个 todo-item 组件的实例 -->

  <todo-item></todo-item>

</ol>

7.props: [''],    为组件追加属性


Vue.component('todo-item', {

  // todo-item 组件现在接受一个

  // "prop",类似于一个自定义属性

  // 这个属性名为 todo。

  props: ['todo'],

  template: '<li>{{ todo.text }}</li>'

})

demo:

<div id="app-7">

  <ol>

    <!-- 现在我们为每个todo-item提供待办项对象    -->

    <!-- 待办项对象是变量,即其内容可以是动态的 -->

 <!-- v-bind:todo="item"  这里的item是 in grocerylist中的item,也就是下面的数组中的各个项,各个项都有text 所以template: '<li>{{ todo.text }} 中的todo.text  被替换成具体的值-->
 <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item>

  </ol>

</div>
Vue.component('todo-item', {

  props: ['todo'],

  template: '<li>{{ todo.text }}</li>'

})

var app7 = new Vue({

  el: '#app-7',

  data: {

    groceryList: [

      { text: '蔬菜' },

      { text: '奶酪' },

      { text: '随便其他什么人吃的东西' }

    ]

  }

})

大量使用自定义组件的效果:

<div id="app">

  <app-nav></app-nav>

  <app-view>

    <app-sidebar></app-sidebar>

    <app-content></app-content>

  </app-view>

</div>

8.v-text 更新元素的 textContent。如果要更新部分的 textContent ,需要使用 {{ Mustache }} 插值

<span v-text="msg"></span>

<!-- 和下面的一样 -->

<span>{{msg}}</span>

9.v-html 更新元素的 innerHTML 。注意:内容按普通 HTML 插入 - 不会作为 Vue 模板进行编译 。如果试图使用 v-html 组合模板,可以重新考虑是否通过使用组件来替代。

<div v-html="html"></div>

10.v-show  根据表达式之真假值,切换元素的 display CSS 属性。当条件变化时该指令触发过渡效果。

11.v-else 

不需要表达式

限制: 前一兄弟元素必须有 v-if 或 v-else-if。

<div v-if="Math.random() > 0.5">

  Now you see me

</div>

<div v-else>

  Now you don't

</div>

12.v-else-if 

类型: any

限制: 前一兄弟元素必须有 v-if 或 v-else-if。


<div v-if="type === 'A'">

  A

</div>

<div v-else-if="type === 'B'">

  B

</div>

<div v-else-if="type === 'C'">

  C

</div>

<div v-else>

  Not A/B/C

</div>

13.v-model

类型: 随表单控件类型不同而不同。

限制:

<input>
<select>
<textarea>
components
修饰符:

.lazy - 取代 input 监听 change 事件
.number - 输入字符串转为数字
.trim - 输入首尾空格过滤
用法:

在表单控件或者组件上创建双向绑定。

14.v-pre

不需要表达式

用法:

跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译。


<span v-pre>{{ this will not be compiled }}</span>

15,。v-cloak

  • 不需要表达式

  • 用法:

    这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。

[v-cloak] {

  display: none;

}
<div v-cloak>

  {{ message }}

</div>

不会显示,直到编译结束。


16.#v-once

不需要表达式

详细:

只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

<!-- 单个元素 -->

<span v-once>This will never change: {{msg}}</span>

<!-- 有子元素 -->

<div v-once>

  <h1>comment</h1>

  <p>{{msg}}</p>

</div>

<!-- 组件 -->

<my-component v-once :comment="msg"></my-component>

<!-- v-for 指令-->

<ul>

  <li v-for="i in list" v-once>{{i}}</li>

</ul>

打赏作者
如果文章对您有所帮助请打赏支持本站发展。

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

标签:

给我留言

您必须 登录 才能发表留言!

Copyright © 大一网 保留所有权利.   Theme  Ality

用户登录 ⁄ 注册

分享到: