Aussicht
Vue.js Anweisungen stehen v-
am Anfang ihrer Rolle und bieten einige spezielle Funktionen für HTML-Elemente, Anweisungen, Bindungsanweisungen für das Element. Die Anweisung fügt ein spezielles Verhalten für die Zielelementbindung hinzu. Anweisungen können als spezielle HTML-Attribute angesehen werden.
v-if
Anweisung
v-if
Es handelt sich um eine bedingte Renderanweisung, die Elemente entsprechend dem Wahr oder Falsch des Ausdrucks löscht und einfügt. Die grundlegende Syntax lautet wie folgt:
v-if="expression"
expression
Ist ein Rückgabewert bool
des Ausdrucks, kann der Ausdruck eine bool
Eigenschaft sein, es kann eine Rückgabe bool
des Ausdrucks sein. Z.B:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="app">
<h1>Hello, Vue.js!</h1>
<h1 v-if="yes">Yes!</h1>
<h1 v-if="no">No!</h1>
<h1 v-if="age >= 25">Age: {{ age }}</h1>
<h1 v-if="name.indexOf('jack') >= 0">Name: {{ name }}</h1>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
yes: true,
no: false,
age: 28,
name: 'keepfool'
}
})
</script>
</html>
v-show
Anweisung
v-show
Auch die Bedingungen, unter denen Anweisungen gerendert werden, und v-if
Anweisungen sind unterschiedlich. Verwendungsanweisungselemente v-show
werden immer in HTML gerendert. Sie legen einfach das CSS für das Elementattribut style
( display: none;
) fest.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="app">
<h1>Hello, Vue.js!</h1>
<h1 v-show="yes">Yes!</h1>
<h1 v-show="no">No!</h1>
<h1 v-show="age >= 25">Age: {{ age }}</h1>
<h1 v-show="name.indexOf('jack') >= 0">Name: {{ name }}</h1>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
yes: true,
no: false,
age: 28,
name: 'keepfool'
}
})
</script>
</html>
v-else
Anweisung
Es kann v-else
Anweisungen sein v-if
oder v-show
ein " else
Block" hinzugefügt werden . v-else
Das Element muss unmittelbar v-if
oder v-show
nach dem Element befolgt werden, da es sonst nicht identifiziert werden kann.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="app">
<h1 v-if="age >= 25">Age: {{ age }}</h1>
<h1 v-else>Name: {{ name }}</h1>
<h1>---------------------分割线---------------------</h1>
<h1 v-show="name.indexOf('keep') >= 0">Name: {{ name }}</h1>
<h1 v-else>Sex: {{ sex }}</h1>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
age: 28,
name: 'keepfool',
sex: 'Male'
}
})
</script>
</html>
v-else
Elemente werden in HTML gerendert und je nach Vorgänger v-if
oder v-show
Anweisung verwendet. Dieser Code v-if
ist true
, letztere v-else
macht nicht zu HTML, v-show
zu true
, aber diese v-else
immer noch den HTML zu rendern.
v-for
Anweisung
v-for
Die Anweisung rendert eine Liste basierend auf einem Array, das der Traversal-Syntax von JavaScript ähnelt:
v-for="item in items"
items
Ist ein Array, das item
das Array-Element ist, das gerade durchlaufen wird.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="styles/demo.css" />
</head>
<body>
<div id="app">
<table>
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Sex</th>
</tr>
</thead>
<tbody>
<tr v-for="person in people">
<td>{{ person.name }}</td>
<td>{{ person.age }}</td>
<td>{{ person.sex }}</td>
</tr>
</tbody>
</table>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
people: [{
name: 'Jack',
age: 30,
sex: 'Male'
}, {
name: 'Bill',
age: 26,
sex: 'Male'
}, {
name: 'Tracy',
age: 22,
sex: 'Female'
}, {
name: 'Chris',
age: 36,
sex: 'Male'
}]
}
})
</script>
</html>
v-bind
Anweisung
v-bind
Die Anweisungen können auf der Rückseite mit einem Parameternamen, einem mittleren Doppelpunkt, versehen sein. Dieser Parameter ist normalerweise charakteristisch für HTML-Elemente (Attribut), zum Beispiel : v-bind:class
.
v-bind:argument="expression"
Der folgende Code erstellt einen einfachen Seitenstreifen, ein v-bind
Anweisungselement, das class
auf das Merkmal einwirkt .
Diese Anweisung enthält einen Ausdruck. Die Bedeutung des Ausdrucks lautet: Markieren Sie die aktuelle Seite.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="styles/demo.css" />
</head>
<body>
<div id="app">
<ul class="pagination">
<li v-for="n in pageCount">
<a href="javascripit:void(0)" v-bind:class="activeNumber === n + 1 ? 'active' : ''">{{ n + 1 }}</a>
</li>
</ul>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
activeNumber: 1,
pageCount: 10
}
})
</script>
</html>
Beachten Sie, dass v-for="n in pageCount"
diese Codezeile pageCount
eine Ganzzahl von 0 n ist, die durchlaufen und dann bis pageCount – 1
zum Ende durchlaufen wird .
v-on
Anweisung
v-on
Der Befehl wird verwendet, um auf DOM-Ereignisse zu warten. Seine Syntax und Verwendung v-bind
sind ähnlich. Überwachen <a>
Sie beispielsweise die Elemente des Klickereignisses:
<a v-on:click="doSomething">
Es gibt zwei Möglichkeiten, eine Methode aufzurufen: Binden Sie eine Methode (lassen Sie das Ereignis auf einen Verweis auf die Methode verweisen) oder verwenden Sie eine Inline-Anweisung.
Greet
Button-Click-Ereignis, das direkt an die greet()
Methode gebunden ist , und Hi-Buttons rufen die say()
Methode auf.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="app">
<p><input type="text" v-model="message"></p>
<p>
<!--click事件直接绑定一个方法-->
<button v-on:click="greet">Greet</button>
</p>
<p>
<!--click事件使用内联语句-->
<button v-on:click="say('Hi')">Hi</button>
</p>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
message: 'Hello, Vue.js!'
},
// 在 `methods` 对象中定义方法
methods: {
greet: function() {
// // 方法内 `this` 指向 vm
alert(this.message)
},
say: function(msg) {
alert(msg)
}
}
})
</script>
</html>
v-bind
Und v-on
Abkürzungen
Vue.js zwei am häufigsten verwendete Anweisungen v-bind
und v-on
Abkürzungen. v-bind
Anweisungen können als Doppelpunkt abgekürzt werden, v-on
Anweisungen können abgekürzte @
Symbole sein.
<!--完整语法-->
<a href="javascripit:void(0)" v-bind:class="activeNumber === n + 1 ? 'active' : ''">{{ n + 1 }}</a>
<!--缩写语法-->
<a href="javascripit:void(0)" :class="activeNumber=== n + 1 ? 'active' : ''">{{ n + 1 }}</a>
<!--完整语法-->
<button v-on:click="greet">Greet</button>
<!--缩写语法-->
<button @click="greet">Greet</button>
Umfassendes Beispiel
Nachdem wir einige Grundkenntnisse in Vue.js eingeführt haben, können wir eine kleine Demo erstellen, die auf den oben genannten Kenntnissen basiert.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="styles/demo.css" />
</head>
<body>
<div id="app">
<fieldset>
<legend>
Create New Person
</legend>
<div class="form-group">
<label>Name:</label>
<input type="text" v-model="newPerson.name"/>
</div>
<div class="form-group">
<label>Age:</label>
<input type="text" v-model="newPerson.age"/>
</div>
<div class="form-group">
<label>Sex:</label>
<select v-model="newPerson.sex">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</div>
<div class="form-group">
<label></label>
<button @click="createPerson">Create</button>
</div>
</fieldset>
<table>
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Sex</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
<tr v-for="person in people">
<td>{{ person.name }}</td>
<td>{{ person.age }}</td>
<td>{{ person.sex }}</td>
<td :class="'text-center'"><button @click="deletePerson($index)">Delete</button></td>
</tr>
</tbody>
</table>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
newPerson: {
name: '',
age: 0,
sex: 'Male'
},
people: [{
name: 'Jack',
age: 30,
sex: 'Male'
}, {
name: 'Bill',
age: 26,
sex: 'Male'
}, {
name: 'Tracy',
age: 22,
sex: 'Female'
}, {
name: 'Chris',
age: 36,
sex: 'Male'
}]
},
methods:{
createPerson: function(){
this.people.push(this.newPerson);
// 添加完newPerson对象后,重置newPerson对象
this.newPerson = {name: '', age: 0, sex: 'Male'}
},
deletePerson: function(index){
// 删一个数组元素
this.people.splice(index,1);
}
}
})
</script>
</html>
Blinddarm
Lesen Sie den Originaltext:https://blog.mazey.net/1953.html