vue传值(小demo)

匿名 (未验证) 提交于 2019-12-03 00:14:01

vue+element ui实现的。解释大多在代码中(代码臭且长,有错误请指正)--

代码如下:

<template>    <div class="userList">    <el-table :data="list" border style="width: 60%;">       <el-table-column type="selection" width="60"/>       <el-table-column prop="userName" label="人物" width="300"/>       <el-table-column prop="sect" label="教派" width="300"/>       <el-table-column prop="kongfu" label="所修功法" width="300"/>       <el-table-column label="操作" width="300">         <template>           <el-button type="text" size="small" @click="handleDelete(row)">删除</el-button>           <el-button type="text" size="small" @click="handleEdit(row)">编辑</el-button>         </template>       </el-table-column>     </el-table>           <el-dialog title="用户列表" :visible.sync="dialogFormVisible"  width="30%" center> 弹窗组件,props传值最重要的就是在这里绑定:form="list"--这里的list是点击编辑,获取到的当前行的数据。 form则是子组件那边接受定义的数据,子组件props中可看到。 run是传过去的函数。子组件通过$emit溜过来触发,也就是子组件中this.$emit('close','') 来触发父组件中定义的事件,close就是触发@close="cancel()",@change相同       <popup :form="list" :run="run" @close="cancel()" @change="sub()"/>     </el-dialog>   </div> </template> <script>      import popup from './popup.vue';     export default {         components: {           popup         },         data() {             return {                 dialogFormVisible: false,                 form: {                     userName: '',                     sect: '',                     kongfu: '',                 },                 list: [                     {                         userName: '周芷若',                         userId: '1',                         sect: '峨眉',                         kongfu: '九阴白骨爪'                     },                     {                         userName: '张无忌',                         userId: '2',                         sect: '明教',                         kongfu: '乾坤大挪移'                     },                     {                         userName: '赵敏',                         userId: '3',                         sect: '朝廷',                         kongfu: '有人'                     },                     {                         userName: '张三丰',                         userId: '4',                         sect: '武当',                         kongfu: '太极'                     }                 ],             };         },         created() {         },         methods: {             //编辑             handleEdit(row) {                 this.list = Object.assign({},row)                 this.dialogFormVisible = true             },             //提交             sub(data) {                 this.cancel()             },             //取消             cancel() {                 this.dialogFormVisible = false             },             //删除             handleDelete(row) {                 this.list.splice(row,1)             },             //测试props传递函数玩的             run() {                 alert('儿子那边打开他爹这边的')             },         }     }; </script>

 

用户列表为element中dialog对话框,这个demo主要实现的就是父组件传值到子组件也就是传到这些个输入框中。 

<template>   <div class="popup">     <el-form :data="form" ref="form" label-width="30%">       <el-form-item label="人物" prop="userName">         <el-input v-model="form.userName" placeholder="用户名称"/>       </el-form-item>       <el-form-item label="教派" prop="sect">         <el-input v-model="form.sect" placeholder="教派"/>       </el-form-item>       <el-form-item label="所修功法" prop="kongfu">         <el-input v-model="form.kongfu" placeholder="所修功法"/>       </el-form-item>     </el-form>     <div slot="footer" class="dialog-footer">       <el-button @click="cancel()">取消</el-button>       <el-button type="primary" @click="sub()">提交</el-button>     </div>   </div> </template>  <script>     export default {         name: "popup",        接收父组件传过来数据和函数         props: {             form:{                 type:Object,                 dafaule : {                     userName:'',                     sect: '',                     kongfu: '',                 }             },             run:{                 Function             }         },         data() {             return {             }         },         methods: {             //取消             cancel() {                 this.$emit('close','');                点击取消触发父组件传过来的事件run,弹出下面的图                 this.run()             },            //提交             sub() {this.$emit('change', '')             },         }     } </script>

 

至此小demo就完成了。

有不足,请指正。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!