Vue-笔记(4)

1、如果我们全局配置了请求的数据接口 根域名,则在每次单独发起 http 请求时,请求的 url 路径,应该以相对路径开头,前面不能带 /  ,否则 不会启用根路径做拼接;

Vue.http.options.root = 'http://vue.studyit.io/';

全局启用 emulateJSON 选项

Vue.http.options.emulateJSON = true;

2、导入 Vue-resource 包,可直接通过 this.$http 发起数据请求。
    (1)this.$http.get('url').then(function(result){});
        注意: 通过 $http 获取到的数据,都在 result.body 中放着。
    (2)this.$http.post(请求地址, 参数, 配置对象).then(function(result){});
        配置对象 --> 以哪种表单数据类型提交,{ emulateJSON: true }, 以普通表单格式,将数据提交给服务器 application/x-www-form-urlencoded
3、transition 元素。
    transition 元素 --> Vue 官方提供的,使用 transition 元素,把 需要被动画控制的元素,包裹起来。
    (1)控制 transition 内部的元素实现动画样式:

<transition>
    <h3 v-if="flag">这是一个H3</h3>
</transition>

        v-enter --> 【这是一个时间点】 是进入之前,元素的起始状态,此时还没有开始进入。
        v-leave-to --> 【这是一个时间点】 是动画离开之后,离开的终止状态,此时,元素 动画已经结束了。
        v-enter-active --> 【入场动画的时间段】。
        v-leave-active --> 【离场动画的时间段】。

    (2)修改动画样式前缀(v)

<transition name="my">
    <h6 v-if="flag2">这是一个H6</h6>
</transition>

        .my-enter、.my-leave-to、.my-enter-active、.my-leave-active
4、使用第三方类实现动画
    (1)入场-->bounceIn    离场-->bounceOut

<transition enter-active-class="animated bounceIn" leave-active-class="animated bounceOut">
    <h3 v-if="flag">这是一个H3</h3>
</transition>

    (2)使用 :duration="毫秒值" 来统一设置 入场 和 离场 时候的动画时长。

<transition enter-active-class="bounceIn" leave-active-class="bounceOut" :duration="200">
    <h3 v-if="flag" class="animated">这是一个H3</h3>
</transition>

    (3)使用  :duration="{ enter: 200, leave: 400 }"  来分别设置 入场的时长 和 离场的时长。

<transition 
    enter-active-class="bounceIn" 
    leave-active-class="bounceOut" 
    :duration="{ enter: 200, leave: 400 }">
    <h3 v-if="flag" class="animated">这是一个H3</h3>
</transition> 

5、动画钩子函数
    第一个参数(el)--> 要执行动画的DOM元素,原生 JS DOM对象,可以理解为通过 document.getElementById('') 获取到原生JS DOM对象。

<transition
      @before-enter="beforeEnter"
      @enter="enter"
      @after-enter="afterEnter">
    <div class="ball" v-show="flag"></div>
</transition>
methods: {
    beforeEnter(el){
        // 动画入场之前,此时,动画尚未开始,可在此设置元素开始动画之前的起始样式
    },
    enter(el, done){
        // 动画 开始之后的样式,这里,可以设置小球完成动画之后的,结束状态
        // el.offsetWidth --> 没有实际的作用,但是,如果不写,出不来动画效果;可以认为 el.offsetWidth 会强制动画刷新
        // done --> afterEnter 函数的引用 done()
    },
    afterEnter(el){
        // 动画完成之后,会调用 afterEnter
    }
}

6、通过 v-for 循环渲染出来的元素的动画

<transition-group appear tag="ul">
    <li v-for="(item, i) in list" :key="item.id" @click="del(i)"> ... </li>
</transition-group>

    (1)通过 v-for 循环渲染出来的,不能使用 transition 包裹,需要使用 transitionGroup,并且必须为每一个 元素 设置 :key 属性。
    (2)给 transition-group 添加 appear 属性,实现页面刚展示出来时候,入场时候的效果。
    (3)通过为 transition-group 元素,设置 tag 属性,指定 transition-group 渲染为指定的元素,若不指定 tag 属性,默认渲染为 span 标签。
7、组件
    (1)使用 Vue.extend 创建全局的Vue组件

var com1 = Vue.extend({
    template: '<h3>这是使用 Vue.extend 创建的组件</h3>' // 通过 template 属性,指定了组件要展示的HTML结构
});

    (2)使用 Vue.component('组件的名称', 创建出来的组件模板对象)

Vue.component('mycom1', Vue.extend({
    template: '<h3>这是使用 Vue.extend 创建的组件</h3>'
}));

    用 Vue.component 定义全局组件时,若组件名称使用了 驼峰命名,则在引用组件的时需要把 大写的驼峰改为小写的字母,同时,两个单词之前使用 - 链接。
    如果不使用驼峰,则直接拿名称来使用即可。
    第一个参数 --> 组件的名称,通过 标签形式 来引用组件。
    第二个参数 --> Vue.extend 创建的组件,其中 template 就是组件将来要展示的HTML内容

    组件的 template 属性指向的模板内容,必须有且只能有唯一的一个根元素。
    (3)在 被控制的 #app 外面,使用 template 元素,定义组件的HTML模板结构
 

<div id="app">
    <mycom3></mycom3>
</div>
<template id="tmpl">
    <div>
        <h1>这是通过 template 元素,在外部定义的组件结构,这个方式,有代码的只能提示和高亮</h1>
        <h4>好用,不错!</h4>
    </div>
</template>
Vue.component('mycom3', {
    template: '#tmpl'
});

    (4)组件中的 data 数据
    组件中的 data 必须是一个方法,还必须返回一个对象,data 数据的使用方式和实例中的 data 使用方式完全一样。

Vue.component('mycom1', {
    template: '<h1>这是全局组件 --- {{msg}}</h1>',
    data: function () {
        return {
            msg: '这是组件的中data定义的数据'
        }
    },
    methods: {
        方法名() {
            ...
        }
    }
});

    (5)Vue提供了 component,来展示对应名称的组件,component 是一个占位符, :is 属性,可以用来指定要展示的组件的名称

<component :is="comName"></component>
发布了76 篇原创文章 · 获赞 26 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_29326717/article/details/93373662