vue从零开始(三)指令

v-bind的使用

<!-- 绑定一个属性 -->
<img v-bind:src="imageSrc">

<!-- 动态特性名 (2.6.0+) -->
<button v-bind:[key]="value"></button>

<!-- 缩写 -->
<img :src="imageSrc">

<!-- 动态特性名缩写 (2.6.0+) -->
<button :[key]="value"></button>

<!-- 内联字符串拼接 -->
<img :src="'/path/to/images/' + fileName">

<!-- class 绑定 -->
<div :class="{ red: isRed }"></div>
<div :class="[classA, classB]"></div>
<div :class="[classA, { classB: isB, classC: isC }]">

<!-- style 绑定 -->
<div :style="{ fontSize: size + 'px' }"></div>
<div :style="[styleObjectA, styleObjectB]"></div>

<!-- 绑定一个有属性的对象 -->
<div v-bind="{ id: someProp, 'other-attr': otherProp }"></div>

<!-- 通过 prop 修饰符绑定 DOM 属性 -->
<div v-bind:text-content.prop="text"></div>

<!-- prop 绑定。“prop”必须在 my-component 中声明。-->
<my-component :prop="someThing"></my-component>

<!-- 通过 $props 将父组件的 props 一起传给子组件 -->
<child-component v-bind="$props"></child-component>

<!-- XLink -->
<svg><a :xlink:special="foo"></a></svg>

其中v-bind绑定class或者style的时候可以使用数组或者对象的形式

v-model进行双向绑定

 

<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>

 

在输入框中输入内容的时候页面中显示的内容也跟着变化,数据改变是输入框的内容也跟着变化

 

v-model实现原理

<my-checkbox v-model="foo"></my-checkbox>
 
Vue.component('my-checkbox', {
  template: `<input 
        type="checkbox"
        @change="$emit('balabala', $event.target.checked)"
        :checked="checked"
       />`,
 props: ['checked'],
 model: {
  prop: 'checked',
  event: 'balabala'
 },
})

在v-bind的基础上进行事件绑定来监听输入框或者选框的变化

v-pre

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

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

v-cloak

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

[v-cloak] {
  display: none;
}
<div v-cloak>
  {{ message }}
</div>

 

posted @ 2019-07-03 09:57  下一页2013  阅读(224)  评论(0编辑  收藏  举报