vue+webpack app项目(6)

作者: Obeing | 来源:发表于2016-09-18 16:53 被阅读784次

step6 利用vue-resource 获取数据

  • 将首页的数据变为动态获取的
  • 首先定义一个json文件,注意格式,否则解析不了会为null,建议可以把自己的json文件在线检测一下
    • news.json
Paste_Image.png
  • 这个文件放在static/data,要在app.js中做相应的配置
  import VueResource from 'vue-resource'
Paste_Image.png
  • 参数解释:
  • proces.env.NODE_ENV 在vue-cli搭建的时候bulid文件里面配置好的可以去研究一下
  • Vue.http.options.emulateJSON = true;

If your web server can't handle requests encoded as application/json , you can enable the emulateJSON option. This will send the request as application/x-www-form-urlencoded MIME type, as if from an normal HTML form.
--- 如果Web服务器无法处理编码为application/json的请求,你可以启用emulateJSON选项。启用该选项后,请求会以application/x-www-form-urlencoded作为MIME type,就像普通的HTML表单一样。

  • 然后使用$http去获取数据,返回值response,利用$set设置 Vue 实例的属性值,也就是之前的假数据task1
Paste_Image.png
  • task1数据改变就会引起视图的变化,现在效果是这样的,那么改变一下以前下拉push进去的假数据
Paste_Image.png Paste_Image.png
  • 先每次刷新都能获取一次数据了,基本模拟了后端传输数据的效果

点击进入详情页面

  • 希望每个列表都能点击去看文章详情,那么要监听一下click事件,在子组件中,找到CardCon.vue
  <div class="card" v-on:click="goDetail">
        <slot></slot>   
    </div>
  • 定义goDetail方法,并且使用dispatch冒泡的父组件,传入当前列表的索引,方便获取数据
       methods:{
             goDetail (){
                this.$dispatch('GoDetailRouter', $(this.$el).index())
              }
        }
  • $emit $dispatch $brocast


    Paste_Image.png
Paste_Image.png
  • 在父组件中的events中监听子组件的事件,msg就是传入的参数,利用路由go方法跳转到详情页
events :{//监听子组件
      GoDetailRouter (msg){
           router.go({
            name: 'detail', 
            params: {
              Lcontent:encodeURIComponent(this.$data.task1[msg].Lcontent)

            }
          });
      }
  }
router.js
 '/home/detail/:Lcontent': {
            name:'detail',
            component (resolve) {
            require(['./views/detail'], resolve)
          }
        }
  • 这里的Lcontent是传入的参数,我这里传入的是详情的文字,实际开发一般是传一个id然后从后台获取相应的数据
  • 增加detail.vue,要了解router钩子函数才能了解下面这一段代码
route: {
          data: function (transition) {

           this.$set('Lcontent',decodeURIComponent(this.$route.params.Lcontent)); 
          }
        }

切换钩子子函数

  • 由于如果我在ready中去获取参数,因为keep-alive将组件缓存所以只会执行一次,但是router的data切换钩子会在每次路由切换的时候调用,保证了当前的参数是最新的
Paste_Image.png
  • 今天用到的关于router 和 resource,网上的资源真的很少,大多是直接翻译了文档,连个demo都没有,各种摸索去试,心好累,大家觉得有帮助的,请在github上给个小星星吧,https://github.com/sally2015/vue-project

相关文章

  • Vue项目实例参考

    1. 参考文档 原教程地址 vue+webpack项目实战 vue+webpack app项目(1) https:...

  • vue+webpack app项目(6)

    step6 利用vue-resource 获取数据 将首页的数据变为动态获取的 首先定义一个json文件,注意格...

  • 如何安装vue

    1、vue+webpack安装,生成初始化vue项目vue+webpack安装,生成初始化vue项目_前端劝退师儿...

  • vue+webpack app项目(2)

    step4 slot的使用 就是外部调用时,标签中的内容。如果外部调用时没有提供内容的话,那么它就会使用自己默认提...

  • vue+webpack app项目(1)

    概述 项目中会用到的插件 vue-router vue-resource 打包工具 webpack 依赖环境 no...

  • vue+webpack app项目(3)

    step6 HomeTab内容+下拉刷新 --这里的ui用的是sui,包括下拉刷新也是用sui的组件,详情:htt...

  • vue+webpack app项目(4)

    step7解决(3)中刷新在两个tab中都添加元素的问题 (3)中的情况是无论在动态tab下拉刷新还是在前端tab...

  • vue+webpack app项目(5)

    step9 个人中心布局## 前面step1到step8已经将首页和基本菜单栏完成,现在先做个人中心页也就是底部菜...

  • vue-cli搭建项目记录

    创建vue+webpack项目vue init webpack 2.eslint: Newline require...

  • 用Vue-cli生成vue+webpack的项目模板怎么设置为v

    用Vue-cli生成vue+webpack的项目模板 $npm install -g vue-cli$vue in...

网友评论

  • 万八量化:另外 像dispatch ready 在vue2.0中都没有了:smiley:
    Obeing: @jk77 我还是初探vue只是把项目的过程写一写,大家赏脸看看而已,还有很多要学习的😀
  • 万八量化:我的文章中 有demo:smile::smile:可以参考哦 router vuex resource 都用上了,官方文档也可以的

本文标题:vue+webpack app项目(6)

本文链接:https://www.haomeiwen.com/subject/lzniettx.html