【Vue入门】练习demo

安装

1. 确定电脑已装node和npm

 node -v
npm -v

出现版本号则说明电脑已经安装好node和npm

2. 创建一个基于webpack的项目

vue init webpack dailyrecord

3. 在项目里安装依赖

cd dailyrecord
npm install

4. 运行

npm run dev

这样你的vue就跑起来啦

配置路由

为了动态渲染各个页面的组件,这个是必须的,这些都在router文件夹里的index.js配置好,新建dailyrecord文件夹在下面新建index.vue

1. 导入页面

import Index from '@/dailyrecord/Index'

2. 配置全局路径

path:'\'
component:'Index'

Element-UI

使用element-ui编写页面样式,具体操作参照官网

1. 安装

npm i element-ui -s

2. 全局配置

找到main.js文件

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

页面

参考element-ui官网做出一些假数据写出index页

绑定table数据

关于接口传值必须要知道的,后台传的值是数组还是对象。一定要确定好,不然后期很容易传错或者接收错的值,导致数据传输不正确,不显示数据

1. 安装并全局导入axios

npm i axios
Vue.prototype.$axios = axios

axios 并不属于 vue的插件
框架与Http本身没有必然的归属性关系,是要实现了Http标准,都可以在任意框架中使用
想要使用this调用的话,可以绑定到vue.prototype上

2. 获取接口,绑定数据

loadlist(){
    this.$axios.get('')
    .then(res=》{
        this.dateb=res.data
    })
}

新增日志数据

1. 新建新增日志组件addlog,并且在父组件里调用

非空验证(详情看elementUi form表单验证)

<add-log .....</add-log>
import AddLog from '@/dailyrecord/AddLog'
  components: {
    AddLog
  }

2. 在子组件里method里写新增方法 addlogone()

新增事件:submit-btn-click,取消事件:cancel-dialog一起传到父组件,在父组件里写方法操作

 @click="$emit('cancel-dialog')"  子
@cancel-dialog="addmodel=false"   父
@submit-btn="addlogl"   父
  this.$emit('submit-btn', this.formdata)  子
  1. 新增里面验证非空通过就提交model到父组件。
  addlogone: function () {
      this.$refs.forma.validate((val) => {
        if (val) {
          this.$emit('submit-btn', this.formdata)
        }
      })
    }
  1. 父组件写方法获取api并传入model,关闭dialog,清空表单(在子组件写清空方法然后父组件调用,ref,refs)
    addlogl (formdata) {
      this.$axios.post('http://qianjia.space:8000/logs', formdata)
        .then((res) => {
          this.addlog = false
          this.loadlist()
          this.$refs.form.reset()
        })
    }
  1. 赋值到页面中,再加载一遍页面
this.loadlist()

删除日志

写删除方法

  1. 用element组件的删除方法,传入索引和数据
@click.native.prevent="deleteRow(scope.$index, datab)"
  1. 写删除方法接收索引,获取当前数据行的Id,传入,然后调用api方法删除数据,最后删除单元格
detleteRow(index,rows){
    var id = rows[index]._id.$oid
    ....
}

修改日志

  1. 点击弹出表单,赋值到子组件
    :data="formdata"
  edit (row) {
      this.formdata = row
      this.editlog = true
    }
<edit :data="formdata"></edit>
  1. 子组件接收父组件传值
    props,mount初始化数据,watch监听数据变化<不监听的话,文本框的值不会变>
  props: {
    data: Object
  }
  mounted () {
    if (this.data && Object.keys(this.data).length) {
      this.setlog()
    } else {
      this.formdata = this.initModel()
    }
  }
  watch: {
    data: function () {
      this.setlog()
    }
  }
  1. 点击提交edita方法将数据传到父组件
 @click="edita"
   edita: function () {
      this.$refs.hh.validate(valid => {
        if (valid) {
          console.log(this.formdata)
          this.$emit('edita', this.formdata)
        }
      })
    }
  1. 父组件页面接收@edita,并定义方法提交数据到修改的接口(需要看数据是什么格式的再决定传入),关闭弹窗
    edita (model) {
      let json = {
        'summary': this.formdata.summary,
        'content': this.formdata.content,
        'user': this.formdata.user
      }
      this.$axios.put('http://qianjia.space:8000/logs' + '/' + model._id.$oid, json)
      .then((res) => {
        this.editlog = false
      })
    }
  1. 合并addlog和editlog
  mounted () {
    if (this.data && Object.keys(this.data).length) {
      this.setlog()
    } else {
      this.formdata = this.initModel()
    }
  },
  watch: {
    data: function () {
      this.setlog()
    }
  

挂载的时候因为add走了Init
edit走了setlog,点击确定的时候,都传入了修改的Model,然后到父组件的时候用不同的方法传递一下api接口就行了

关于绑定数据的问题

1. :data="model"

(1)用于绑定向子组件传的数据,在父组件data里必须定义完整

data:function(){
    model:{
        data:'',
        user:'',
        summary:'',
        content:''
    }
}

(2)用于绑定table数据,写在el-table最外层,在子组件里定义类型就可以,做列表显示用,init里赋值

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