Vue.js

一般少用全局components

事件处理器

v-on

例1: 点击事件

<button v-on:click="你的method">按钮</button>
<button @click="你的method">按钮</button>   <!--这个@click是v-on:click的缩写-->

组件(component)

例1:

<div id="myVue">
  <ol>
      <my-component v-for='item in games' v-bind:game='item'></my-component> 
  <!--定义组件 , 名字自取 . 循环games , 绑定game属性 . 每一次循环得到数组内容传给game属性-->
  </ol>
</div>

<script>
//定义组件my-component
Vue.component('my-component',{
    props: ['game'],
    template: '<li>{{ game.text}}</li>'
})
//vue对象实例化
  var myVue = new Vue({
          el: '#myVue',
          data: {
              games: [{text:'马里奥'},{text:'塞尔达'},{text:'怪物猎人'}]
          }
    })
</script>

过滤器(filters)

例1:

<div id='myVue'>
  <p>{{message | toupper}}</p> 
<!--通过管道符用toupper方法把message传入toupper中返回大写方法-->
</div>

<script>
var myVue = new Vue({
  el: '#myVue',
  data: {
         message: 'hello vue'
  },
  filters: {
          toupper: function(value){
           return value.toUpperCase();
      }
  }
})
</script>

计算属性(computed)

例1:

    <div id="myVue">
        <p>今年3月3日发卖的任天堂新一代主机Switch的价格是:{{price}}円.
            含税价格:{{priceInTax}}円.折合人民币{{priceChinaRMB}}元</p>
    </div>

    <script>
        var myVue = new Vue({
            el: '#myVue',
            data: {
                price: 29980            //原始价格
            },
            computed: {
                priceInTax: function(){
                    return this.price * 1.08        //含税价格
                },
                priceChinaRMB: function () {
                    return Math.round(this.priceInTax / 16.75)      //换算人民币
                }
            }
        })
    </script>

监视属性(watch)

例1:

    <div id="myVue">
        <p>今年3月3日发卖的任天堂新一代主机Switch的价格是:{{price}}円.
            含税价格:{{priceInTax}}円.折合人民币{{priceChinaRMB}}元</p>
            <button @click="btnClick(10000)">加价10000円</button>
    </div>

    <script>
        var myVue = new Vue({
            el: '#myVue',
            data: {
                price: 0,
                priceInTax: 0,
                priceChinaRMB: 0
            },
            watch: {        //监视price,一旦它发生变化就会调用这个函数
                price: function(newVal,oldVal){     //它的newVal就是下面赋值29980,oldVal就是0
                    this.priceInTax = Math.round(this.price * 1.08)
                    this.priceChinaRMB = Math.round(this.priceInTax / 16.75)
                }
            },
            methods: {
                btnClick: function(raiseAprice){
                    this.price += raiseAprice
                }
            }
        })
        myVue.price = 29980   //这样设置好vue实例后让price变化 , watch就会启用
    </script>

Class绑定

例:

    <style>
        .active{
            color:blue;
        }
    </style>
<div id="myVue">
    <p v-bind:class="{active:isActive}">变色1</p>
    <p :class="{active:isActive}">变色1</p>
    <button @click="btnClick">改变class</button>
</div>
<script>
    var myVue = new Vue({
        el: "#myVue",
        data: {
           isActive: true 
        },
        methods: {
            btnClick:function(){
                this.isActive = !this.isActive
            }
        }
    })
</script>

Class对象绑定

    <style>
        .active {
            color: red;
        }

        .big {
            font-weight: bolder;
            font-size: 60px;
        }
    </style>
    <div id="myVue">
        <p :class="myClass">文本</p>
        <button @click="btnClick">改变class</button>
    </div>
    <script>
        var myVue = new Vue({
            el: '#myVue',
            data: {
                myClass: {
                    active: true,
                    big: true
                },
            },
            methods: {
                btnClick: function () {
                    this.myClass.big = !this.myClass.big
                    this.myClass.active = !this.myClass.active
                }
            }
        })
    </script>

条件渲染

<div id="myApp">
    <h1 v-if="result == 0">成绩未公布</h1>
    <h1 v-else-if="result < 60">{{result}}分 - 考试不及格</h1>
    <h1 v-else-if="result < 80">{{result}}分 - 还需努力</h1>
    <h1 v-else>{{result}}分 - 考得不错,玩游戏吧!</h1>
    <button @click="btnClick">考试成绩</button>
</div>
<script>
    var myApp = new Vue({
        el: '#myApp', 
        data: {
            result: 0
        },
        methods: {
            btnClick: function(){
                this.result = Math.round(Math.random() * 100);
            },
        },
    });
</script>

元素显示

<div id="myApp">
    <h1 v-show="result">任天堂新一代主机Switch</h1>
    <button @click="btnClick">点击消失</button>
</div>
<script>
    var myApp = new Vue({
        el: '#myApp', 
        data: {
            result: true
        },
        methods: {
            btnClick: function(){
                this.result = !this.result;
            },
        },
    });
</script>

列表渲染

<div id="myApp">
    <ul>
        <li v-for="(game, index) in games">({{index}}) {{game.title}} / 售价:{{game.price}}元</li>
    </ul>
</div>
<script>
    var myApp = new Vue({
        el: '#myApp', 
        data: {
            games: [
                {title:"勇者斗恶龙",price:500},
                {title:"库跑卡丁车",price:400},
                {title:"马里奥世界",price:550},
            ]
        },
    });
</script>

对象的迭代

<div id="myApp">
    <h1>JS对象迭代</h1>
    <div v-for="(value, key) in mygame">
        {{ key }} : {{ value }}
    </div>
</div>
<script>
    var myApp = new Vue({
        el: '#myApp', 
        data: {
            mygame: {
                title: "乌贼娘2代",
                price: 350,
                pubdate: "2017年夏季",
                category: "射击",
                agerange: "全年龄",
            },
        },
    });
</script>

事件处理器

<div id="myApp">
    <h1>事件处理器</h1>
    <input id="txtName" v-on:keyup="txtKeyup($event)">
    <button id="btnOK" v-on:click="btnClick($event)">OK</button>
</div>
<script>
    var myApp = new Vue({
        el: '#myApp', 
        data: {},
        methods: {
            txtKeyup: function(event){
                this.debugLog(event);
            },
            btnClick: function(event){
                this.debugLog(event);
            },
            debugLog:function(event){
                console.log(
                    event.srcElement.tagName, 
                    event.srcElement.id, 
                    event.srcElement.innerHTML, 
                    event.key?event.key:""
                );
            },
        },
    });
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,046评论 0 29
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • 下载安装搭建环境 可以选npm安装,或者简单下载一个开发版的vue.js文件 浏览器打开加载有vue的文档时,控制...
    冥冥2017阅读 6,033评论 0 42
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,204评论 0 6
  • vue.js官网教程学习笔记和学习摘要 起步 安装 一个简单的方法,直接把一个vue.js引入你的HTML页面中,...
    恰皮阅读 3,366评论 2 22