Home > Web Front-end > JS Tutorial > How to use the V-bind directive in VueJs

How to use the V-bind directive in VueJs

php中世界最好的语言
Release: 2018-05-14 13:57:15
Original
3078 people have browsed it

This time I will show you how to use the V-bind instruction in VueJs, and what are the precautions for using the V-bind instruction in VueJs. The following is a practical case, let's take a look.

Introduction

v-bind is mainly used for attribute binding. Vue officially provides an abbreviation: bind, for example:

<!-- 完整语法 -->
<a v-bind:href="url"></a>
<!-- 缩写 -->
<a :href="url"></a>
Copy after login

1. Overview

v-bind is mainly used for attribute binding, such as your class attribute, style attribute, value attribute, href attribute, etc. Etc., as long as it is an attribute, it can be bound using the v-bind directive.

Example:

<!-- 绑定一个属性 -->
<img v-bind:src="imageSrc">
<!-- 缩写 -->
<img :src="imageSrc">
<!-- 内联字符串拼接 -->
<img :src="&#39;/path/to/images/&#39; + fileName">
<!-- class 绑定 -->
<p :class="{ red: isRed }"></p>
<p :class="[classA, classB]"></p>
<p :class="[classA, { classB: isB, classC: isC }]">
<!-- style 绑定 -->
<p :style="{ fontSize: size + &#39;px&#39; }"></p>
<p :style="[styleObjectA, styleObjectB]"></p>
<!-- 绑定一个有属性的对象 -->
<p v-bind="{ id: someProp, &#39;other-attr&#39;: otherProp }"></p>
<!-- 通过 prop 修饰符绑定 DOM 属性 -->
<p v-bind:text-content.prop="text"></p>
<!-- 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>
Copy after login

2. Binding HTML Class

Object syntax

We can pass Give v-bind:class an object to dynamically switch classes

<p v-bind:class="{ active: isActive }"></p>
Copy after login
The above syntax indicates active. Whether this class exists or not will depend on the truthiness of the data attribute isActive

You can change the class in the object Pass in more attributes to dynamically switch between multiple classes. Additionally, the v-bind:class directive can also coexist with the normal class attribute. When there is the following template:

<p class="static"
  v-bind:class="{ active: isActive, &#39;text-danger&#39;: hasError }">
</p>
  和如下 data
data: {
 isActive: true,
 hasError: false
}
Copy after login
The result is rendered as:

<p class="static active"></p>
Copy after login
When isActive or hasError changes, the class list will be updated accordingly. For example, if the value of hasError is true, the class list will become "static active text-danger"

The bound data object does not have to be defined inline in the template

<p v-bind:class="classObject"></p>
data: {
 classObject: {
 active: true,
 'text-danger': false
 }
}
Copy after login
The rendered result and Same as above. We can also bind a computed property of the returned object here. This is a common and powerful pattern:

<p v-bind:class="classObject"></p>
data: {
 isActive: true,
 error: null
},
computed: {
 classObject: function () {
 return {
  active: this.isActive && !this.error,
  'text-danger': this.error && this.error.type === 'fatal'
 }
 }
}
Copy after login

Array syntax## We can pass an array to v-bind:class to Apply a class list

<p v-bind:class="[activeClass, errorClass]"></p>
data: {
 activeClass: 'active',
 errorClass: 'text-danger'
}
Copy after login

Rendered as:

<p class="active text-danger"></p>
Copy after login

If you also want to switch the classes in the list based on conditions, you can use the ternary

expression

Writing this way will always add errorClass, but only add activeClass when isActive is truthy.

However, it is a bit cumbersome to write like this when there are multiple conditional classes. Therefore, object syntax can also be used in array syntax

<p v-bind:class="[{ active: isActive }, errorClass]"></p>
Copy after login

3. Used on components When in a self-defined component When using the class attribute on

, these classes will be added to the root element of the component. Classes that already exist on this element will not be overwritten.

For example, if you declare this component:

Vue.component('my-component', {
 template: '<p class="foo bar">Hi</p>'
})
Copy after login
Then add some classes when using it

<my-component class="baz boo"></my-component>
Copy after login
The HTML will be rendered as:

<p class="foo bar baz boo">Hi</p>
Copy after login
The same applies to classes with

data binding

<my-component v-bind:class="{ active: isActive }"></my-component>
Copy after login
When isActive is truthy, HTML will be rendered as
<p class="foo bar active">Hi</p>
Copy after login

4. Binding Defining inline styles

Object syntax

The object syntax of v-bind:style is very intuitive - it looks very like CSS, but it is actually a

JavaScript

Object. CSS property names can be named using camelCase or kebab-case (remember to use single quotes):

<p v-bind:style="{ color: activeColor, fontSize: fontSize + &#39;px&#39; }"></p>
data: {
 activeColor: 'red',
 fontSize: 30
}
Copy after login
It is usually better to bind directly to a style object, which will Make the template clearer
<p v-bind:style="styleObject"></p>
data: {
 styleObject: {
 color: 'red',
 fontSize: '13px'
 }
}
Copy after login
Similarly, object syntax is often used in conjunction with the calculated properties of the returned object

Array syntax

   v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上

<p v-bind:style="[baseStyles, overridingStyles]"></p>
Copy after login

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

react router4+redux控制路由权限步骤详解

v-bind与v-on使用案例详解

Vue表单类父子组件数据传递数据方法总结

The above is the detailed content of How to use the V-bind directive in VueJs. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template