vue

  • 大括号
  • 数据绑定
  • 绑定监听

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>showtitle>
    <script type="text/javascript" src="./release/vue.js">script>
head>
<body>
<div id="msg">
    <h1>基础h1>
    <input type="text" v-model="message" />
    <p>Hello {{message}}p>
    <p>{{message.toUpperCase()}}p>
    <p v-html="message">p> 
    <p v-text="message">p> 

    <p>强制数据绑定p>
    <img src="imgURL"> 
    <img v-bind:src="imgURL"> 
    <img :src="imgURL"> 

    <p>绑定监听p>
    <button v-on:click="func">test1button> 
    <button @click="func2('asv')">test2button> 
div>
<script type="text/javascript">
    var vm = new Vue({
        el : '#msg',
        data : {
            message : 'vue',
            imgURL : 'https://cn.vuejs.org/images/dcloud.gif'
        },
        methods : {
            func() {
                alert("test is click")
            },
            func2(content){
                alert(content)
            }
        }
    })
script>
body>
html>
  • 计算属性和监视

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>showtitle>
    <script type="text/javascript" src="./release/vue.js">script>
head>
<body>
<div id="msg">
    <h1>计算属性和监视h1>
    姓:<input type="text" placeholder="fist name" v-model="fistName" /><br>
    名:<input type="text" placeholder="second name" v-model="secondName" /><br>
    姓名1(单向):<input type="text" placeholder="Full Name1" v-model="FullName1"><br> 
    姓名2(单向):<input type="text" placeholder="Full Name2" v-model="FullName2"><br> 
    姓名2(单向):<input type="text" placeholder="Full Name3" v-model="FullName3"><br> 
    姓名3(双向):<input type="text" placeholder="Full Name4" v-model="FullName4"><br> 
    {{FullName1}}
    {{FullName1}}
    {{FullName1}} 
    
div>
<script type="text/javascript">
    var vm = new Vue({
        el : '#msg',
        data : {
            fistName : 'A',
            secondName : 'B'
        },
        //计算属性 computed
        computed : {
            // 什么时候执行:初始化显示 / 相关的data属性数据发生变化
            // 在页面中可以使用{{方法名}} 来显示计算结果
            FullName1 () { // 计算属性的一个方法,方法的返回值作为属性值
                return this.fistName + ' ' + this.secondName
            },
            FullName4 : {
                get(){//回调函数 : 计算并返回当前属性的值
                    return this.fistName + ' ' + this.secondName
                },
                set(newvalue){//js中的set是监视的意思,不是修改值的意思
                    // 当属性值发生修改时,调用的回调函数
                    var nums = newvalue.split(' ');
                    this.fistName = nums[0]; // 因为一般来说中间有个空格分开,所以split空格,如果多个空格嘛 这里就不细说
                    this.secondName = nums[1];
                }
            }
        },
        watch : { // 监视
            // 格式是  监视的属性名 :回调函数
            fistName : function (newValue, oldValue) {//会把新的值和旧的值作为参数传递
                // alert(newValue + " " + oldValue)
                this.FullName2 = newValue + ' ' + this.secondName
            }
        }
    });
    vm.$watch('secondName', function (newvalue, oldvalue) {
        this.FullName3 = this.fistName + ' ' + newvalue
    }); // 通过实例方法来监视
script>
body>
html>
  • class和style的绑定

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>showtitle>
    <script type="text/javascript" src="./release/vue.js">script>
head>
<body>
<h1>class和style的绑定h1>
<div id="msg">
    <h2>class的绑定h2>
    
    <p class="cClass" :class="a">绑定的class是字符串p>
    <button @click="update1">updatebutton>
    <p class="cClass" :class="{aClass : isA, bClass: isB}">绑定的class是一个对象p> 
    <button @click="update2">updatebutton>
    <p :class="['aClass', 'cClass']">绑定的class是一个数组p> 

    <h1>style的绑定h1>

    <p :style="{color:activeColor, fontSize:fontSize + 'px'}">style的绑定{{fontSize}}p>
    <button @click="update3">updatebutton>
div>
<script type="text/javascript">
    var vm = new Vue({
        el : '#msg',
        data:{
            a : 'aClass',
            isA : true,
            isB : false,
            activeColor : 'red',
            fontSize : 45
        },
        methods : {
            update1 () {
                if(this.a == 'aClass')
                    this.a = 'bClass';
                else
                    this.a = 'aClass';
            },
            update2 () {
                this.isA = !this.isA;
                this.isB = !this.isB;
            },
            update3 () {
                this.activeColor = 'blue';
                this.fontSize -= 5;
            }
        }
    });
script>
body>
html>
  • 条件渲染

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>showtitle>
    <script type="text/javascript" src="./release/vue.js">script>
    <style>
        .aClass{
            color: red;
        }
        .bClass{
            color: blue;
        }
        .cClass {
            font-size: 40px;
        }
    style>
head>
<body>
<div id="msg">
    <h1>条件渲染h1>
    
    <p v-if="ok">成功了p> 
    <p v-else>失败了p> 
    <button @click="ok = !ok    ">switchbutton>


    <p v-show="ok1">successp> 
    <p v-show="!ok1">faildp> 
    <button @click="change()">switchbutton>
div>
<script type="text/javascript">
    var vm = new Vue({
        el : '#msg',
        data : {
            ok : false,
            ok1 : false
        },
        methods : {
            change(){
                this.ok1 = !this.ok1;
            }
        }
    });
script>
body>
html>
  • 列表渲染

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>showtitle>
    <script type="text/javascript" src="./release/vue.js">script>
head>
<body>
<div id="msg">
    <h1>列表渲染h1>
    <p>v-for遍历数组p>
    <li v-for="(p, index) in persons" :key="index">
        {{index}}---{{p.name}}----{{p.age}}---<button @click="deleteP(index)">删除button>----<button @click="updateP1(index, name, age)">更新button> 
    li>
    <input type="text" v-model="name"><input type="text" v-model="age">

    <p>v-for遍历对象p>
    <ul>
        <li v-for="(value, key) in persons[1]" :key="key">
            {{key}}:{{value}}
        li>
    ul>


    <input type="text" v-model="search"><br>
    <li v-for="(p, index) in filerPersons" :key="index"> 
        {{index}}---{{p.name}}----{{p.age}}---<button @click="deleteP(index)">删除button>----<button @click="updateP1(index, name, age)">更新button> 
    li><br>
    <button @click="setOrderTpe(1)">年龄升序button>
    <button @click="setOrderTpe(2)">年龄降序button>
    <button @click="setOrderTpe(0)">默认排序button>
div>
<script type="text/javascript">
    var vm = new Vue({
        el : '#msg',
        data : {
            name : '',
            age : '',
            search : '',
            orderTpe : 0, // 0代表原本 1代表升序 2代表降序
            persons : [
                {name:'Tom0', age:18},
                {name:'Tom1', age:17},
                {name:'Tom2', age:16},
                {name:'Tom3', age:19},
                {name:'Tom4', age:14}
            ], // 既然是列表 就需要一个数组
        },
        methods : {
            deleteP(index) {
                this.persons.splice(index, 1);
                // 因为 splice 在Vue中重写 会刷新
            },
            updateP(index, name, age) {
                obj = {};
                obj.name = name;
                obj.age = age;
                this.persons[index] = obj;
                // 上述更新操作并没有改变 persons 这个变量本身,所以不会出现页面刷新操作!!!!!
            },
            updateP1(index, name, age){
                obj = {}
                obj.name = name;
                obj.age = age;
                this.persons.splice(index, 1, obj); // index 位置 删除本身那个 替换成obj
            },
            setOrderTpe(OrderType){
                this.orderTpe = OrderType;
            }
        },
        computed : {
            filerPersons() {
                // 得到search中的关键字
                var {search, persons, orderTpe} = this;
                //对persons过滤
                var list;
                list = persons.filter(p => (p.name.indexOf(search) != -1));
                // p.name 取出名字属性值, indexOf 判断serach 再属性值中出现的位置,如果没有出现则返回-1

                // 排序
                if(orderTpe != 0){
                    list.sort(function (p1, p2) { // 返回负数则p1在前,返回正数p2在前
                        if(orderTpe == 1)
                            return p2.age - p1.age;
                        else
                            return p1.age - p2.age;
                    })
                }
                return list;
            }
        }
        /*
        * 数组更新检测:
        *   Vue包含一组观察数组的变异方法,他们将会触发视图更新
        *       1. push()
        *       2. pop()
        *       3. shift()
        *       4. unshift()
        *       5. splice()
        *       6. sort()
        *       7. reverse()
        *   Vue 对以上7个函数实现了两个功能:1:原生js的共呢个 2:更新视图
        * */
    });
script>
body>
html>
  • 事件处理

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>showtitle>
    <script type="text/javascript" src="./release/vue.js">script>
head>
<body>
<div id="msg">
    <h1>绑定监听h1>
    <button v-on:click="test1">test1button>
    <button v-on:click="test2('the passage')">test2button>
    <button v-on:click="test3($event)">test3button> 
    
div>
<script type="text/javascript">
    var vm = new Vue({
        el : '#msg',
        methods : {
            test1(){
                // 如果没有指定形式参数,则会默认传递 event事件对象
                alert(1);
            },
            test2(passage){
                // 因为制定了形式参数,所以 没有传递 event事件对象
                alert(passage)
            },
            test3(event){
                alert(event.target.innerHTML)// 输出这个结点的内容
            }
        }
    });
script>
body>
html>

你可能感兴趣的:(javaweb)