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脚本不行了,换了一个新的. 组件化让我越来越感觉到框架的力量了 一 ...
随机推荐
- bind、call和apply对比和使用
最开始关于call.apply.bind函数的使用时,总是很模糊,不知道用哪一个,this指向问题等,看了一些别人的总结后有了一定的理解,所以特地记录一下: 要搞清楚call.apply.bind我们 ...
- 开始在web中使用JS Modules
本文由云+社区发表 作者: 原文:<Using JavaScript modules on the web> https://developers.google.com/web/funda ...
- 第65章 博客帖子 - Identity Server 4 中文文档(v1.0.0)
第65章 博客帖子 65.1 团队帖子 65.1.1 2019 IdentityServer中的范围和声明设计 尝试使用IdentityServer4的设备流程 OAuth2中隐含流的状态 另一种保护 ...
- JSON Web Token入门教程
目录 一.跨域认证的问题 二.JWT的原理 三.JWT的数据结构 3.1Header 3.2Payload 3.3 Signature 3.4 Base64URL 四.JWT的使用方式 五.JWT的几 ...
- 前端css
CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS语法 CSS实例 ...
- HTML文档编写规范
(1)HTML标记是由尖括号包围的关键词.所有标记均以“<”开始,以“>”结束.结束的标记在开始名称前加上斜杠“/”.例如头部标记格式如下所示:<head> ……</he ...
- Changes of user relationship in AD can't be correctly synchronized to SCSM
The relationship of users might be not correctly updated if related users were once re-named in AD o ...
- CesiumJS 添加会动的GIF
由于Cesium使用canvas渲染,如果使用billboard等加载gif图片只能渲染第一帧,导致动图不动.在Cesium的官方示例中找到一段代码可将HTML元素渲染到地图上,将gif以html元素 ...
- Android音视频之AudioRecord录音(一)
在音视频开发中,录音当然是必不可少的.首先我们要学会单独的录音功能,当然这里说的录音是指用AudioRecord来录音,读取录音原始数据,读到的就是所谓的PCM数据.对于录音来说,最重要的几个参数要搞 ...
- ng6.1 新特性:滚回到之前的位置
在之前的版本中滚动条位置是一个大问题,主要表现在 1. 使用快捷键或者手势前进/后退的时候,滚动条的位置经常是错乱的,所以只能每个页面都要重置一个滚动条的位置: 2. #anchor1 锚点位置无法定 ...