Vue lernen-grundlegende Grammatik

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"

expressionIst ein Rückgabewert booldes Ausdrucks, kann der Ausdruck eine boolEigenschaft sein, es kann eine Rückgabe booldes 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-showAuch die Bedingungen, unter denen Anweisungen gerendert werden, und v-ifAnweisungen sind unterschiedlich. Verwendungsanweisungselemente v-showwerden 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-elseAnweisungen sein v-ifoder v-showein " elseBlock" hinzugefügt werden . v-elseDas Element muss unmittelbar v-ifoder v-shownach 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-elseElemente werden in HTML gerendert und je nach Vorgänger v-ifoder v-showAnweisung verwendet. Dieser Code v-ifist true, letztere v-elsemacht nicht zu HTML, v-showzu true, aber diese v-elseimmer 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"

itemsIst ein Array, das itemdas 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-bindDie 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-bindAnweisungselement, das classauf 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 pageCounteine Ganzzahl von 0 n ist, die durchlaufen und dann bis pageCount – 1zum Ende durchlaufen wird .

v-on Anweisung

v-onDer Befehl wird verwendet, um auf DOM-Ereignisse zu warten. Seine Syntax und Verwendung v-bindsind ähnlich. Überwachen &lt;a&gt;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.

GreetButton-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-bindUnd v-onAbkürzungen

Vue.js zwei am häufigsten verwendete Anweisungen v-bindund v-onAbkürzungen. v-bindAnweisungen können als Doppelpunkt abgekürzt werden, v-onAnweisungen 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

Ich denke du magst

Origin blog.51cto.com/mazey/2638325
Empfohlen
Rangfolge