vue实践笔记

公共的css在app.vue中引入:


1516765681(1).jpg

1.清空除了index.html,app.vue以外的src文件夹文件内容
main.js
引入文件

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue';
import Icon from 'vue-svg-icon/Icon';
import ElementUI from 'element-ui';
import axios from 'axios';
import App from './App';
import router from './router';

+axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端

Vue.prototype.$http = axios;
Vue.use(ElementUI);
Vue.config.productionTip = false;//来关闭生产模式下给出的提示

app.vue
页面模块是

<template></template>
<script></script>
<style></script>
<template>
    <div id="app">
        <headCode></headCode>
    </div>
</template>

<script>
注意路径./
import headCode from './components/public/header'
export default({
  name:'App',
  data(){

  },
  components:{
    "headCode":headCode
  },

})
</script>
1516787826(1).jpg

在学习的同时又扒到了一个好帖哈哈哈http://www.cocoachina.com/programmer/20170527/19378.html
:class表达式的写法:

HTML代码:
<div :class=" 'classA classB' ">Demo1</div>
渲染后的HTML:
<div class="classA classB">Demo1</div>

<div :class="classA ? 'class-a' : 'class-b' ">Demo3</div>

<div :class="{ 'class-a': isA, 'class-b': isB}">Demo4</div>

接下来我想在index模块中有一个带参页面跳转,还是做单页面应用,因为是最经典的。
//indexcon.vue

  <router-link  class="btn" :to='{name: "detail",params:{id:0}}'>详情</router-link>

//App.vue

<template>
  <div id="app">
    <headCode></headCode>
    <router-view name="index"></router-view>
    <router-view name="detial"></router-view>
  </div>
</template>

<script>
import headCode from './components/public/header'
export default({
  name:'App',
  data(){
    return {

    }
  },
  components:{
    "headCode":headCode
  },

})

//router/index.js

import detial from '@/components/detail';
export default new Router({
  routes:[
    {path:'/',name:'App',components:{
      index:Index
      }
    },
    {  path: '/detail/:id',name:'detail',components:{
        detial:detial
      }
    }
  ]
})

然后在新页面接受参数:

this.$route.params.id;//用$route报错的原因:we found solution, need to use `this.$route` except `$route` inside a component

好了,以上就是单页面带参跳转做好了

现在来处理跳转到的detail页面:
第一个问题:../src/json/data.json死活not found,改成../static/json/data.json就好了。不造是不是因为我的主文件就在src文件夹的原因
第二个问题:在 this.$http.get方法中,this指向发生了改变,要用的话要么定义在外面,要么this_

 methods:{
      getData:function () {
        var this_ = this;
        this.$http.get("../static/json/data.json",{}).then(function (res) { console.log(this);
          console.log(res.data);//json文件内容(说好的在res.body呢。。。。)
           this_.detailText = res.data[this_.$route.params.name];
        }),function (res) {

        };
      }
  }

第三个:不会影响效果但是会报错一片红,可以在方法里自定义一下再拿来用

     <img :src="detailText.imgDetail['0']" alt="">
//or
     <img :src="detailText.imgDetail[0]" alt="">

接下来写表单:
html部分:

  <form action="" id="contact" @submit.prevent="contactSend">
          <div class="input">
            <input type="text" class="col-lg-6 col-sm-1" v-model="user.name" placeholder="昵称">
            <input type="text"  class="col-lg-6 col-sm-1"  v-model="user.email" placeholder="email">
          </div>
          <textarea style="resize: none" name="" id=""  v-model="user.talkToYou" cols="30" rows="10"></textarea>
          <button type="submit" class="btn">发送</button>
        </form>

js部分:

export default({
  data (){
    return {
      openItem:false,
      user:{"name":"","email":"","talkToYou":""}
    }
  },
  methods:{
    contactSend:function () {
      var formData = JSON.stringify(this.user);
      this.$http.post("addContact.php",{formData:formData}).then(function (res) {
        
      }),function (res) {
        
      };
    }
  }
})

嗯哼今天早上打开发现,路由跳转切换到新路由时,会保持原先的滚动位置
router/index.js

export default new Router({
  modal:'history',//必须是这个模式
  scrollBehavior:function () {
    return {y:0}
  },
  routes:[
    {path:'/',name:'App',components:{
      index:Index
      }
    },
    {  path: '/detail/:name',name:'detail',components:{
        detial:detial
      }
    }
  ]
})

要做一个轮播了,代码贴一下
html部分:
css讲一下思路得了,ul的宽度ulImg在vue.computed里计算好,margin-left值sliderAnimate.ulImgLeft定义在data中随轮播变化具体在计数器slider()里。小点点也是这么走

//图片
 <div class="nav-con-imgSlider">
        <!--<img style="height:500px;width: 100%;" src="../../static/image/slider1.jpg" alt="">-->
        <ul class="nav-con-imgSlider-ul" :style="'width:'+ulImg+'px;margin-left:'+sliderAnimate.ulImgLeft+'px'" :sliderSign="sliderSign">
          <li v-for="(v,index) in sliderNove" :data-key="index">
            <router-link :to="{name:'detail',params:{name:v.name}}"><img :src="v.url" alt="" ></router-link>
          </li>
        </ul>
      </div>
//小点点
 <ul class="nav-con-textSlider-circle">
          <li v-for="(v,index) in sliderNove" @click="clickSlider($event)" :get-index="index" :class="{'active':index==sliderSign}"><span></span></li>
  </ul>

js部分

 export default ({
    data() {
      return {
        sliderAnimate:{
          "ulImgLeft":0,
          "ulImgTextLeft":0
        },
        sliderAnimateFn:'',//计时器
        sliderSign:0//走的那个数字,0,1,2,3......很重要哦
      }
    },
    methods: {
     //计时器里面的走马灯方法,index表示走到哪里了(点击小点点才有参数index)
      slider:function (index) {
        if(index == this.sliderSign){
          this.sliderSign = index;
        }else{
          this.sliderSign++;
          if(this.sliderSign == this.sliderNove.length){
            this.sliderSign = 0;
          }
        }
          this.sliderAnimate.ulImgLeft = -this.sliderSign*1920;
          this.sliderAnimate.ulImgTextLeft = -this.sliderSign*300;
      },
//这个绑定的是移入时暂停
      stopSlider:function () {
        clearInterval(this.sliderAnimateFn);
      },
//这个绑定的是移出时重启
      reSlider:function () {
        this.sliderAnimateFn = setInterval(this.slider,3000);
      },
//这个绑定的是点击选定时跳转(去点击时顺带也调用着移入动作,所以会暂停不会疯狗一样的自己跑)
      clickSlider:function (e) {
        this.sliderSign = e.currentTarget.getAttribute('get-index');
        this.slider(this.sliderSign);
      }
    },
    mounted: function () {
      this.getData();
      this.slider();
//开始定时器,注意这个方法的写法,错了就坑了。
      this.sliderAnimateFn = setInterval(this.slider,3000);
    },

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

推荐阅读更多精彩内容

  • 目录 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 element★13489 ...
    余生社会阅读 19,674评论 7 233
  • 这段时间都在忙着复习啊,昨天平安夜收到了一个袖子,今年收到的唯一的圣诞节礼物~( ̄ ̄~)~这次竟然没怎么想过节,就...
    马小言阅读 181评论 0 0
  • 云说你是触不可及的仙花, 是不染凡尘的天使, 在夜空中起舞, 在天幕上歌唱。 那分明是凡花不懂的语言, 可我为何听...
    逸之阅读 384评论 0 4
  • 今年夏天种了三株西红柿,青青的西红柿味道真是好闻。又翻出这篇旧作西红柿,夏天的阿拉斯加,真是除了蚊子,一切都好...
    阿拉斯加晴空阅读 323评论 0 1
  • 1 有一天,易迈王国的小夏镇上可真热闹,因为有一位侯爵要去骑士城堡与他的公爵兄长一同觐见仁慈的十三世国王,在去骑士...
    大话心情阅读 407评论 2 7