<div id="app"> hello <my-button> </my-button> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.7/vue.common.dev.js"></script> <script> let vm = new Vue({ provide: { msg: '100'…
众所周知,在组件式开发中,最大的痛点就在于组件之间的通信.在 Vue 中,Vue 提供了各种各样的组件通信方式,从基础的 props/$emit 到用于兄弟组件通信的 EventBus,再到用于全局数据管理的 Vuex. 在这么多的组件通信方式中,provide/inject 显得十分阿卡林(毫无存在感).但是,其实 provide/inject 也有它们的用武之地.今天,我们就来聊聊 Vue 中 provide/inject 的应用. 何为 provide/inject provide/inj…
在vue中使用echarts有两种方法一.第一种方法1.通过npm获取echarts npm install echarts --save 2.在vue项目中引入echarts 在 main.js 中添加下面两行代码 import echarts from 'echarts' Vue.prototype.$echarts = echarts 注:import echarts from 'echarts' 引入echarts后,不能全局使用echarts,所以通过Vue.prototype将ech…
vue中push()和splice()的使用方法 push()使用 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度.注意:1. 新元素将添加在数组的末尾. 2.此方法改变数组的长度. splice()使用 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目注意:这种方法会改变原始数组 语法: array.splice(index,len,item1,.....,itemX) index: 必需,数组开始下标 (必须是数字) len: 替换/删除的长度(必须…
Vue3组件通信方式: props $emit expose / ref $attrs v-model provide / inject Vuex 使用方法: props 用 props 传数据给子组件有两种方法,如下 方法一,混合写法 // Parent.vue 传送 <child :msg1="msg1" :msg2="msg2"></child> <script> import child from "./chil…
由来 组件之间的通信可以通过props和$emit的方式进行通信,但是如果组件之间的关系非常复杂的话,通过以上的方式会很麻烦,并且程序会非常脆弱,没有建中性可言. 在==vue2.2.0 中新增provide和inject属性==,可以方便的帮助我们进行组件间的传值. 使用的方式很简单: ==父组件通过provide提供数据,其他组价可以使用inject注入数据.== 注意 ==不推荐直接用于应用程序代码中.一般使用的场景是自定义组件库的时候,底层组件之间需要通信的时候使用.== provide…
用Vue开发项目有一段时间,在实际项目中遇到一些问题,在里把问题记录下来,并附上解决方案,给遇到同样的问题的码友提供一个解决思路吧: 测试部抛出问题一:在Vue1.0路由vue-router中,当点击菜单一个组件加载出来表格列表,输入查询条件查询,当在单击这个菜单后表格的数据没有重置查询条件和查询结果. 原因分析:Vue路由在页面渲染一个组件后加载后,再加载这个组件,组件不会摧毁后在重新生成这个组件,不会重新触发组件的生命周期中的方法.代码如下: <!DOCTYPE html> <htm…
用Vue开发项目有一段时间,在实际项目中遇到一些问题,在里把问题记录下来,并附上解决方案,给遇到同样的问题的码友提供一个解决思路吧: 测试部抛出问题一:在Vue1.0路由vue-router中,当点击菜单一个组件加载出来表格列表,输入查询条件查询,当在单击这个菜单后表格的数据没有重置查询条件和查询结果. 原因分析:Vue路由在页面渲染一个组件后加载后,再加载这个组件,组件不会摧毁后在重新生成这个组件,不会重新触发组件的生命周期中的方法.代码如下: <!DOCTYPE html> <htm…
vue中我么会经常用到通用的一些全局的方法,如何左才能实现全局的复用减少代码累赘呢? 我们一般将公用的方法分装再utils.js文件中,然后再main.js主入口文件中将utils.js中的公共的方法通过@import引入进来即可,或者我们通过再main.js中设置Vue.prototype.xxx = function () {};来设置全局通用的 方法:   样式的复用也是一样的道理,我们可以通过再assets/styles中通过index.css文件将所有的通用样式再main.js文件中导…
有一些问题不限于 Vue,还适应于其他类型的 SPA 项目. 1. 页面权限控制和登陆验证 页面权限控制 页面权限控制是什么意思呢? 就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的.如果一个页面,有角色越权访问,这时就得做出限制了. 一种方法是通过动态添加路由和菜单来做控制,不能访问的页面不添加到路由表里,这是其中一种办法.具体细节请看下一节的<动态菜单>. 另一种办法就是所有的页面都在路由表里,只是在访问的时候要判断一下角色权限.如果有权限就允许访问,没…
1.安装sass的依赖包 npm install --save-dev sass-loader //sass-loader依赖于node-sass npm install --save-dev node-sass 2.在build文件夹下的webpack.base.conf.js的rules里面添加配置 { test: /\.sass$/, loaders: ['style', 'css', 'sass'] } 如下图所示: 3.在APP.vue中修改style标签 <style lang=&quo…
1.安装sass的依赖包 npm install --save-dev sass-loader //sass-loader依赖于 node-sass npm install --save-dev node-sass 2.在build文件夹下的webpack.base.conf.js的rules里面添加配置 { test: /\.sass$/, loaders: ['style', 'css', 'sass'] } 3.在APP.vue中修改style标签 <style lang="scss…
类型: provide:Object | () => Object inject:Array<string> | { [key: string]: string | Symbol | Object } 这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深(也就是父级以下所有子组件都可以通过inject得到父组件的数据),并在起上下游关系成立的时间里始终生效. provide 是一个对象或返回一个对象的函数.该对象包含可注入其子孙的属性, inject …
简单介绍:当一个子组件需要用到父组件的父组件的某些参数.那么这个时候为了避免组件重复传参,使用vue的依赖注入是个不错的方法,直接在最外层组件设置一个provide,内部不管多少嵌套都可以直接取到最外层的参数. provide/inject可实现跨组件传值,数据的流只能是向下传递,其中父组件provide,子组件inject.provide : 必须在父组件进行使用,用来给后代组件注入依赖(属性或方法)inject : 必须在子组件进行使用,用来获取根组件定义的要跨组件传递的数据 但是要注意一个…
在VUE开发时,数据可以使用jquery和vue-resource来获取数据.在获取数据时,一定需要给一个数据初始值. 看下例: <script type="text/javascript"> new Vue({ el:'#app', data:{data:""}, created:function(){ var url="json.jsp"; var _self=this; $.get(url,function(data){ _se…
在vue项目的开发中,表单的验证必不可少,在开发的过程中,用的是vue+iview的一套,我们知道iview的表单验证是基于async-validator,对于async-validator不熟悉的可以去官网看看,https://github.com/yiminghe/async-validator: 1.普通的自定义验证 <Col span="24"> <FormItem label="确认密码" prop="passwordrepea…
注意请求可能存在跨域问题,需要去配置好 这三种建议使用axios 1.resource Vue 要实现异步加载需要使用到 vue-resource 库. Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求. 先导入一个线上cdn的地址,当然还可以去npm安装,但个人觉得这种方便 <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></scri…
1>意外的全局变量函数中意外的定义了全局变量,每次执行该函数都会生成该变量,且不会随着函数执行结束而释放. 2>未清除的定时器定时器没有清除,它内部引用的变量,不会被释放. 3>脱离DOM的元素引用一个dom容器删除之后,变量未置为null,则其内部的dom元素则不会释放. 4>持续绑定的事件函数中addEventListener绑定事件,函数多次执行,绑定便会产生多次,产生内存泄漏. 5>绑在EventBus的事件没有解绑 6>闭包引起内存泄漏比如事件处理回调,导致D…
1.作用:vuex允许把store分割为模块,每一个模块都有自己的state,actions,getters,mutations甚至是嵌套一些子模块,从上到下进行同样方式的分割 在文件src中创建一个文件夹store,包含index.js就是store.js ,然后再创建文件夹modules文件夹,此文件夹中放的就是模块, import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) import menu from './modules…
在使用vue.js框架的时候,有时候会希望在页面渲染完成之后,再执行函数方法来处理初始化相关的操作,如果只处理页面位置.宽或者高时,必须要在页面完全渲染之后才可以,页面没有加载完成之前,获取到的宽高不准确.使用过jquery的都知道,有个ready方法可以使用,但vue.js则需要结合watch和nextTick方法来使用. watch():用于观察Vue实例上的数据变动. nextTick:在下次 DOM 更新循环结束之后执行延迟回调. 注:其中 imgHeight 为 watch 的检测对象…
ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表. 官网:https://echarts.baidu.com/ 兼容性很好的,数据可视化图标.本章只介绍在vue里面如何配置使用: 你可以使用如下命令通过 npm 安装 ECharts vue2----…
在处理token过期的这个问题上困扰了我很久,现在终于解决的了,所以分享出来给大家,希望能够对大家有所帮助. 首先,当然是路由进行拦截,路由拦截当然是在beforeEach中了: router.beforeEach((to, from, next) => { iView.LoadingBar.start(); //Util.title(to.meta.title, router.app); Util.title(to.meta.title); if (Cookies.get('locking')…
用watch方法,来限制字数 <template> <div class="box"> <textarea v-model="title" width="100%" ></textarea> <span>还可以输入{{this.titleMaxLength - this.title.length}}</span> </div> </template>…
先列举一些例子 :class="['content',{'radioModel':checkType}]" :class="['siteAppListDirNode',{open:appitem.open==true}]" :class="['portalCenterMenu',{showNav:!showHideNav,hideNav:showHideNav}]" :class="{shortcutMenuShow:!showHide…
半年木有更新博客了... 前段时间一直在学习vue,开始记录一下遇到的问题吧 这篇文章主要是总结一下vue中使用less或者sass的方法,以less为例(style.less) 主要是两种 1.对于写在vue文件中的less: 所有vue文件的<style lang="less"></style>,会被vue-loader处理编译到一个css文件中,最终自动通过link标签写入index.html(在vue-loader.conf.js中配置) <sty…
介绍 Vue 的 Provide 以及 Inject Provide 以及 Inject 是 Vue 中用于祖先元素向其所有后台元素注入依赖的接口. 具体用法 // Data.vue ... export default { provide: { setData: 'setData' }, methods: { setdata() { //Something } } }; // DataItem.vue ... export default { inject: ['setData'], crea…
vue中的this指向问题 如果方法中没有使用箭头函数,记得把this赋值给另一个变量再使用.…
两种方法: 方法一: 使用$nextTick,在异步获得数据之后再获取元素: 方法二: 在then之后再获取该元素: 问题2:vue中监听改变数组的方法: let idx =; this.listInfo =item.filter((item,index)=>{ if(index==idx){ return item.showAll = true; }else{ return item.showAll = false; } }) this.listInfo =item.filter((item,…
项目开发的时候,有时候可能需要我们来对页面后退和前进,这个东西跟浏览器自带的前进后退功能很像,下面来大致讲一下在vue中浏览器的前进和后退 一.后退功能 vue中的后退有好多种方法可以使用,使用这些方法前要确认有之前的页面,否则后退就到了一个空页面! 可以通过history.length来获取历史记录的长度 console.log(history.length) 1.window.history对象中保存有页面访问的历史记录,在编写时可不使用 window 这个前缀. 加载历史列表中的前一个UR…
个人网站 https://iiter.cn 程序员导航站 开业啦,欢迎各位观众姥爷赏脸参观,如有意见或建议希望能够不吝赐教! 好久没更博了,感觉下班后的时间莫名其妙就没有了,有了,了... 趁着端午放假,更一篇博吧,也算是对已过半的6月一个交代.恩,已过大半~ 主题是Vue中几种常见的传值方法...先写个父子传值吧 vue-cli构建项目目录,噜啦啦,这个就不用说了吧. 接着创建父子组件,父组件Father.vue,子组件Son.vue(随意起名,开心就好),然后在父组件中引入子组件,创建一个父…