Vue2.0入门学习-选项操作

propsData Option

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>propsData Option</title>
        <script type="text/javascript" src="../assets/js/vue.js"></script>
    </head>
    <body>
        <h1>propsData Option</h1>
        <hr>
        <header></header>

        <script type="text/javascript">
            var header_a=Vue.extend({
                template:`<p>{{message}}-{{a}}</p>`,
                data:function () {
                    return{
                        message:'Hello,I am header!'
                    }
                },
                props:['a']
            });
            new header_a({propsData:{a:12}}).$mount('header');
        </script>
    </body>
</html>

computed Option

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>computed Option</title>
        <script type="text/javascript" src="../assets/js/vue.js"></script>
    </head>
    <body>
        <h1>computed Option</h1>
        <hr>
        <div id="app">
            <p>{{newPrice}}</p>
            <ul>
                <li v-for="reversNew in reversNews">{{reversNew.title}}-{{reversNew.date}}</li>
            </ul>
        </div>
        <script type="text/javascript">
            var newList = [
                {title:'aaaaaaa',date:'2020/6/4'},
                {title:'ffffff',date:'2020/6/7'},
                {title:'ccccccc',date:'2020/6/7'},
                {title:'hhhhhhh',date:'2020/6/8'}
            ];
            var app =  new Vue({
                el:'#app',
                data:{
                    price:100,
                    newsList:newList
                },
                computed:{
                    newPrice:function () {
                        return this.price="¥"+this.price+'元';
                    },
                    reversNews:function () {
                        return this.newsList.reverse();
                    }
                }
            })
        </script>
    </body>
</html>

methods Option

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8">
        <title>methods Option</title>
        <script type="text/javascript" src="../assets/js/vue.js"></script>
    </head>
    <body>
        <h1>methods Option</h1>
        <hr>
        <div id="app">
            <p>{{count}}</p>
            <p>
                <button @click="add(2,$event)">ADD</button>
            </p>
            <p>
                <!-- 自定义组件调用构造器中的add方法 -->
                <btn @click.native="add(2,$event)"></btn>
            </p>
        </div>
        <!-- 外部button调用构造器中的add方法 -->
        <button οnclick="app.add(3)">外部ADD</button>
        <script type="text/javascript">
            var btn={
                template:`<button>组件ADD</button>`
            }
            var app =  new Vue({
                el:'#app',
                data:{
                    count:0
                },
                components:{
                    'btn':btn
                },
                methods:{
                    add:function (num,event) {
                        if(num!=''){
                            // 点击事件
                            console.log(event);
                            return this.count+=num;
                        }else {
                            return this.count++;
                        }
                    }
                }
            })
        </script>
    </body>
</html>

watch 选项

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>watch 选项</title>
        <script type="text/javascript" src="../assets/js/vue.js"></script>
    </head>
    <body>
        <h1>watch 选项</h1>
        <hr>
        <div id="app">
            <p>今日温度:{{wendu}}°</p>
            <p>穿衣建议:{{chuanyi}}</p>
            <p>
                <button @click="shenggao">升高温度</button>
                <button @click="jiangdi">降低温度</button>
            </p>
        </div>
        <script type="text/javascript">
            var chuanyiArray=["T恤短裙","夹克长裙","羽绒服"];
            var app =  new Vue({
                el:'#app',
                data:{
                    wendu:14,
                    chuanyi:'夹克长裙'
                },
                methods:{
                    shenggao:function () {
                        return this.wendu+=5;
                    },
                    jiangdi:function () {
                        return this.wendu-=5;
                    }
                },
                // watch:{
                //     wendu:function (newVal,oldVal) {
                //         if(newVal>=26){
                //             this.chuanyi=chuanyiArray[0];
                //         }else if(newVal<26&&newVal>0){
                //             this.chuanyi=chuanyiArray[1];
                //         }else {
                //             this.chuanyi=chuanyiArray[2];
                //         }
                //     }
                // }
            })
            app.$watch('wendu',function (newVal,oldVal) {
                if(newVal>=26){
                    this.chuanyi=chuanyiArray[0];
                }else if(newVal<26&&newVal>0){
                    this.chuanyi=chuanyiArray[1];
                }else {
                    this.chuanyi=chuanyiArray[2];
                }
            })
        </script>
    </body>
</html>

Mixin 混入选项

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Mixin 混入选项</title>
        <script type="text/javascript" src="../assets/js/vue.js"></script>
    </head>
    <body>
        <h1>Mixin 混入选项</h1>
        <hr>
        <div id="app">
            {{num}}
            <p><button @click="add">ADD</button></p>
        </div>
        <script type="text/javascript">
            var addConsole={
                updated:function () {
                    console.log("数据发生变化,变成了"+this.num);
                }
            };

            Vue.mixin({
                updated:function () {
                    console.log("我是全局的mixin");
                }
            });

            var app =  new Vue({
                el:'#app',
                data:{
                    num:1
                },
                methods:{
                    add:function () {
                        this.num++;
                    }
                },
                updated:function () {
                    // 混入的先执行,原生的后执行
                    console.log("我是原生的update");
                },
                mixins:[addConsole]
            })
        </script>
    </body>
</html>

extends Option

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>extends Option</title>
        <script type="text/javascript" src="../assets/js/vue.js"></script>
    </head>
    <body>
        <h1>extends Option</h1>
        <hr>
        <div id="app">
            ${num}
            <p><button @click="add">ADD</button></p>
        </div>
        <script type="text/javascript">
            var extendsObj={
                updated:function () {
                    console.log("我是扩展的updated");
                },
                methods:{
                    add:function () {
                        console.log("我是扩展的methods");
                        this.num++;
                    }
                }
            };
            var app =  new Vue({
                el:'#app',
                data:{
                    num:1
                },
                methods:{
                    add:function () {
                        console.log("我是原生的方法");
                        this.num++;
                    }
                },
                updated:function () {
                    // 混入的先执行,原生的后执行
                    console.log("我是原生的update");
                },
                extends:extendsObj,
                delimiters:['${','}']
            })
        </script>
    </body>
</html>
发布了35 篇原创文章 · 获赞 36 · 访问量 4213

猜你喜欢

转载自blog.csdn.net/xieweikun_7/article/details/105397598