vue的组件化运用(数据在两个组件互传,小问题总结)
一、vue的组件化应用
首先,知道有哪些相关的属性需要用到,再慢慢去理解,运用。
1.两个vue页面
2. slot占位符(可用可不用)
3.props内置属性
4.watch监听函数
5.import导入vue的功能
6.data的return里需要返回值需要放进去,如 data: ' ' 就行了
第一步,写好两个vue页面,我这里写的是dialog(对话框)的弹框运用
(1)子组件(dialog)基本代码如下
<template>
<el-dialog title="编辑规格" :visible.sync="sizeedit" @close="closingedit" width="30%"> <el-form :model="form" ref="form" label-width="80px" :rules="rules">
<el-form-item label="规格名称" prop="name">
<el-input v-model="form.name" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="warning" size="small" @click="reset('form')">重置</el-button>
<el-button type="danger" size="small" @click="close">取消</el-button>
<el-button type="primary" size="small" @click="save('form')">保存</el-button>
</div>
</el-dialog>
</template>
data里
form: {}
sizeedit: false,
methods里
close () {
this.$emit('close-sizeedit', true)
},
reset () {
this.$refs.form.resetFields()
},
closingedit () {
this.$emit('close-sizeedit', true)
},
(2)父组件中
需要传递的值为id,通过函数传递id
handleEdit (id) {
console.log(id)
this.editId = id
this.sizeeditVisible = true
console.log(this.sizeeditVisible)
},
所以交流的值是editId
(3)两个页面基本完成的情况下,第一步,导入子组件,并且绑定传递的参数
import sizeedit from './sizeedit'
components: {
sizeedit
}
<sizeedit
:sizeedit-visible="sizeeditVisible"
@close-sizeedit="sizeeditVisible = false"
:edit-id="editId"/>
父组件,data里
editId: '',
sizeeditVisible: false,
子组件,要开始添加内置属性props和watch监听参数的变化,然后执行函数
props: {
'sizeeditVisible': Boolean,
'editId': String
}
watch: {
sizeeditVisible () {
this.sizeedit = this.sizeeditVisible
this.showEdit()
}
}
methods里
showEdit () {
console.log(this.editId)
let formData = new FormData()
formData.append('id', this.editId)
let config = {headers: {'Content-Type': 'multipart/form-data'}}
this.$http.post('/psi/base/edit', formData, config).then(res => {
console.log(this.form)
this.form.name = res.data.data.name
})
}
那么,基本只要父组件的id是确实在变化而且不是undefined【一般都是输入框变化的值】(判断方法,在相应函数下,console.log(id)),那么form里的规格名称就会改变。
组件套用,参数(String,Boolean)传递基本完成。
二、小问题总结
需要注意的几个小问题
1.关于form的
-1 this.$refs.form.resetFields() 是清空form数据的函数,但是前提,你的form属性不能少,form-item里props一定要有
-2 一定要有v-model属性,如文中的v-model = "form.name"
-3 在data里的数据,form需要帮name占位,这样子,你传递的值才会放进来
form: { name: '' }
2.关于子父组件的
-1 绑定数据时,一定要注意,父组件里需要定义editId,在data设置为空就行(注意在父组件用console.log检测是否id有值)
-2 子组件里,要有props和watch,用来监听你的值发生变化,从而相应做出动作
-3 在父组件引用子组件时,要记得用import导入,而且在components组件里,导入那个标签,从而才能在父组件的vue页面里放子组件的大标签
-4 注意传递的数据,在引用子组件标签时,绑定editId
3.关于敲代码找错的
-1 遇到问题,看控制台,点击右键,检查,然后在console里看是什么错
-2 如果console里没有报红,而又确实没有数据,那你就要考虑是函数功能并没有被调用,还是你没有把数据放进去,导致调用了也是空值
-3 学会找到出错的地方,比如你想实现那个功能,但是点击发现并没有发生函数功能,那么你就需要检查函数,以及相关的绑定值,多打打console.log,看是否都有值。
暂时这篇文章涉及到的就是String和Boolean类型的传值,晚点看下下次有没有空,再添加一下form的传递,就是Object,会比较蛋疼,但是和这里的写法是不一样的。
前端实习满3个月,vue边学边用1个半月,还不错,加油继续肝,有没有大神有其他前端的知识推荐我去看一下,或者说我自己最近抽点时间看下红客的知识,还有想要学服务器部署环境,将项目发布到自己域名上,榨油。
vue的组件化运用(数据在两个组件互传,小问题总结)的更多相关文章
- vue.js原生组件化开发(二)——父子组件
前言 在了解父子组件之前应先掌握组件开发基础.在实际开发过程中,组件之间可以嵌套,也因此生成父子组件. 父子组件创建流程 1.构建父子组件 1.1 全局注册 (1)构建注册子组件 //构建子组件chi ...
- vue组件化之模板优化及注册组件语法糖
vue组件化之模板优化及注册组件语法糖 vue组件化 模板 优化 在 https://www.cnblogs.com/singledogpro/p/12054895.html 这里我们对vue.js ...
- vue中子组件调用父组件里面的数据和方法 父组件调用子组件的数据和方法
1.子组件直接调用父组件的数据和方法 在父组件father,vue <template> <div> <!-- 父组件里面的数据 --> <p>父组件里 ...
- App 组件化/模块化之路——Android 框架组件(Android Architecture Components)使用指南
面对越来越复杂的 App 需求,Google 官方发布了Android 框架组件库(Android Architecture Components ).为开发者更好的开发 App 提供了非常好的样本. ...
- 大话大前端时代(一) —— Vue 与 iOS 的组件化
序 今年大前端的概念一而再再而三的被提及,那么大前端时代究竟是什么呢?大前端这个词最早是因为在阿里内部有很多前端开发人员既写前端又写 Java 的 Velocity 模板而得来,不过现在大前端的范围已 ...
- vue04 组件化开发 Vue自动化工具
5. 组件化开发 5.1 组件[component] 组件(Component)是自定义封装的功能.在前端开发过程中,经常出现多个网页的功能是重复的,而且很多不同的网站之间,也存在同样的功能. 而在网 ...
- vue项目中使用组件化开发
最近在使用vue-cli结合webpack打包工具开发一个后台管理系统,使用vue难免需要运用组件化思想,而这也正是vue的一大特点. 在之前做的vue项目中,稍微有一点组件化的思想,可能是对组件化不 ...
- 三. Vue组件化
1. 认识组件化 1.1 什么是组件化 人面对复杂问题的处理方式 任何一个人处理信息的逻辑能力都是有限的,所以当面对一个非常复杂的问题时我们不太可能一次性搞定一大堆的内容. 但是我们人有一种天生的能力 ...
- vue - Vue组件化编程
今天是对vue组件化的一个理解,最主要的单文件组件,然后就可以脚手架的学习了,本来昨晚就该上传的,但是用的那个上传博客园的Python脚本不行了,换了一个新的. 组件化让我越来越感觉到框架的力量了 一 ...
随机推荐
- Android 初次进入默认不弹出软键盘
[遇到问题] 初次进入某个界面时,当页面中有EditText ,会自动聚焦并弹出软键盘. [解决方法] getWindow().setSoftInputMode(WindowManager.Layou ...
- 自定义view 波浪效果
实现波浪效果view,可以自定义view,也可以自定义drawable,我个人比较喜欢重写drawable,因此这里是自定义drawable实现效果,费话少说,先看效果. 这里用了两种方式实现波浪效果 ...
- 在Hyper-V上安装RemixOS 的Android模拟器
不想用实体机,想不想弄个快速的Android虚拟环境,今天我们就来说说把Android模拟器(RemixOS)安到Hyper-v上的办法. 1. 下载RemixOs 或者直接去 论坛获得下载地址 2 ...
- helm 持久化部署ingres
Ingress 是一种 Kubernetes 资源,也是将 Kubernetes 集群内服务暴露到外部的一种方式.本文将讲一讲如何用 Helm 在 Kubernetes 集群中部署 Ingress,并 ...
- Cmake 学习笔记
编写CMakeLists.txt #在当前目录新建一个build目录,然后cd build:cmake .. #这样的好处是,可以将cmake生成的内容,和源码文件分离 #设置编译结果发布路径 ...
- 如何修复使用WSUS进行升级Win 10 更新1809的报错(0x8024200)
备注:该文档有另一个姊妹篇,介绍如何修复下游服务器一直有处于需要文件下载的状况. /* Style Definitions */ table.MsoNormalTable {mso-style-nam ...
- 开启全民窃听风云——C#智能录音录像录屏程序源码放送!
·引子 我这人从小有个坏毛病,就是喜欢偷窥别人隐私.当然,在道德上,我时刻要求自己做一名正人君子,只不过是心理上有这癖好罢了.所以我从小就对窃听.窃视.黑客技术.破解技术等疯狂着迷!实际上这也是我走上 ...
- Cocos Creator 资源加载流程剖析【二】——Download部分
Download流程的处理由Downloader这个pipe负责(downloader.js),Downloader提供了各种资源的"下载"方式--即如何获取文件内容,有从网络获取 ...
- 6.[leetcode] ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- #Java学习之路——基础阶段二(第一篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...