2018-05-13 二

一、微博交互案例

因为没学过ajax,所以不会交互。等会了之后重新看

二、vue生命周期

  1. 创建一个钩子函数
    created:实例已经创建
    beforeCompile编译之前
    compiled 编译之后
    ready 插入到文档中
    beforeDestroy 销毁之前
    destroyed 销毁之后
    lifecycle.png
  2. 用户会看到花括号标记:
    v-cloak 防止闪烁, 比较大段落
[v-cloak]:{display:none}

v-text也能防止闪烁

vue2.0已经删掉
<span>{{msg}}</span>     ->   v-text
{{{msg}}}     ->   v-html
  1. 计算属性的使用:
    computed:{
        b:function(){   //默认调用get
            return 值
        }
    }
    computed:{
        b:{
            get:
            set:
        }
    }

* computed里面可以放置一些业务逻辑代码,一定记得return

  1. vue实例简单方法:
    vm.$el -> 就是元素
    vm.$data -> 就是data
    vm.$mount -> 手动挂在vue程序
    vm.$options -> 获取自定义属性
    vm.$destroy -> 销毁对象
    vm.$log(); -> 查看现在数据的状态
  2. 循环
    v-for="value in data"
    会有重复数据
    track-by='索引' 提高循环性能
    track-by='$index/uid'
<div id="box">
    <input type="button" value="添加" @click="add" >
    <ul>
        <li v-for="value in arr" track-by="$index">{{value}}</li>
    </ul>
</div>
<script>
    var vm = new Vue({
        el: '#box',
        data: {
            arr:['a','b','c']
        },
        methods:{
            add:function(){
                this.arr.push('d');
            }
        }
    });
</script>
  1. 过滤器
    配合事件用的:
    debounce 延迟执行,加时间
    <input type="text" @keyup="add | debounce 2000">
    配合数据的:
    limitBy 限制几个
    limitBy 参数(取几个)
    limitBy 取几个 从哪开始
    filterBy 过滤数据
    filterBy ‘谁’
    orderBy 排序
    orderBy 谁 1/-1
    1 -> 正序
    2 -> 倒序
        <li v-for="val in arr |limitBy 2">{{val}}</li>
        <li v-for="val in arr |limitBy 2 arr.length-2">{{val}}</li>
        <li v-for="val in arr1 |filterBy 'b'">{{val}}</li>

        <input type="text" v-model="a">
        <li v-for="val in arr1 |filterBy a">{{val}}</li>


        <li v-for="val in arr1 |orderBy -1 ">{{val}}</li>
        <input type="text" v-model="c">
        <li v-for="valu in arr2 |orderBy c">{{valu}}</li>


  • 自定义
    自定义过滤器: model ->过滤 -> view
<div id="box">
   {{a | my 1 2}}
</div>
<script>
    Vue.filter('my',function(input,a,b){
        alert(a+','+b);
        return (input<10?'0'+input:input);
    })
    var vm = new Vue({
        el: '#box',
        data: {
            a:9
        },
        methods:{
            add:function(){
                alert(1);
            }
        }
    });
  • 时间转化器
    过滤html标记
    双向过滤器:*
    Vue.filter('filterHtml',{
                read:function(input){     //model-view
                    return input.replace(/<[^<]+>/g,'');
                },
                write:function(val){    //view -> model
                    return val;
                }
    });

数据 -> 视图
model -> view
view -> model

  1. 自定义指令
    v-text、v-for、v-html 都叫指令
    指令: 扩展html语法
    Vue.directive(指令名称,function(参数){
        this.el -> 原生DOM元素
    });
    <div v-red="参数"></div>
//可以传参!

指令名称: v-red -> red 注意: 必须以 v-开头

  1. 拖拽
<div id="box">
    <div v-drag :style="{width:'100px', height:'100px', background:'blue', position:'absolute',right:0,top:0}"></div>
    <div v-drag :style="{width:'100px', height:'100px', background:'blue', position:'absolute', left:0, top:0}"></div>
</div>
<script>
    Vue.directive('drag',function(){
       var oDiv = this.el;
        oDiv.onmousedown = function(ev){
            var disX = ev.clientX - oDiv.offsetLeft;
            var disY = ev.clientY - oDiv.offsetTop;
            document.onmousemove = function(ev){
                var l = ev.clientX - disX;
                var t = ev.clientY - disY;
                oDiv.style.left = l +'px';
                oDiv.style.top = t +'px';
            };
            document.onmouseup = function(){
                document.onmouseup = null;
                document.onmousemove = null;
            }
        }
    });
  1. 自定义元素指令:(用处不大)
<div id="box">
   <zns-red></zns-red>
</div>
<script>
    Vue.elementDirective('zns-red',{
        bind:function() {
            this.el.style.background= 'red';
        }
    });
    var vm = new Vue({
        el: '#box',
        data: {
            msg:'welcome'
        },
        methods:{
        }
    });
</script>

display:block是必须的

  1. 自定义键盘事件
    @keydown.up
    @keydown.enter
    @keydown.a/b/c....
    都可以设置对应的弹出信息,但是一些默认事件无法触发,例如ctrl/enter
    自定义 :
Vue.directive('on').keyCodes.ctrl=17;
Vue.directive('on').keyCodes.myenter=13;
  1. 监听数据变化:
    vm.$el/$mount/$options/....
    vm.$watch('a',function(){
        console.log("发生变化")
    })
    document.onclick = function(){
        vm.a = 1;
    }

vm.$watch(name,fnCb); //浅度
vm.$watch(name,fnCb,{deep:true}); //深度监视 ,可以监听json

<div id="box">
    {{json | json}}
    {{json}}
</div>
    var vm = new Vue({
        el: '#box',
        data: {
            json:{name:'zjx',age:20}
        },
        methods:{
        }
    });
    vm.$watch('json',function(){
        console.log("发生变化")
    },{deep:true});
    document.onclick = function(){
        vm.json.name = 'aaa';
    }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 1.安装 可以简单地在页面引入Vue.js作为独立版本,Vue即被注册为全局变量,可以在页面使用了。 如果希望搭建...
    Awey阅读 10,982评论 4 129
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,198评论 0 6
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,044评论 0 29
  • 为什么一直都没女朋友? 最近两年多不下十人问过我这个问题。更不乏一些亲戚逢年过节的时候补上一句:差不多该处对象了。...
    madsaki_阅读 131评论 0 0
  • 我希望有个如你一般的人。如这山间清晨一般明亮清爽的人,如奔赴古城道路上阳光一般的人,温暖而不炙热,覆盖我所有肌肤。...
    吴安安阅读 207评论 0 0