vue中$on与$emit的实际应用】的更多相关文章

$on常用于监听自定义事件,触发后可传入参数 //监听event1事件 vm.$on('event1',function(msg){ console.log(msg) }) //触发event1自定义事件 vm.$emit('event1','参数') 需要注意的时,自定义事件必须绑定在实例上,否则无效. 应用一:传值可用于组件间的数据通信,如下例:(将A组件的数据a和B组件的数据b传入C组件中) //A组件 var A={ template:"<div><h2>组件A&…
什么是 better-scroll better-scroll 是一个移动端滚动的解决方案,它是基于 iscroll 的重写,它和 iscroll 的主要区别在这里.better-scroll 也很强大,不仅可以做普通的滚动列表,还可以做轮播图.picker 等等. better-scroll 的滚动原理 不少同学可能用过 better-scroll,我收到反馈最多的问题是: 我的 better-scroll 初始化了, 但是没法滚动. 不能滚动是现象,我们得搞清楚这其中的根本原因.在这之前,我…
父调子 $refs (把父组件的数据传给子组件)  <template> <div id="app"> <input type="button" name="" id="" @click="parentCall" value="父调子" /> <hello ref="chil" />//hello组件 </div&…
双向绑定实现($on $emit) 关于父子之间数据更新同步, 如果单向绑定, 子修改了,父却没有修改, 这种一般不符合规范 正常更新数据的套路是: 1. 子通知父更新数据 2. 子自动刷新获取最新数据 - 为实现这个,就会有发布订阅模式 1.特点: 一对多, 一个动作产生,引发一连串行为. 对应到数据结构是: {失恋:[cry,eat,shopping]} 2.如果失恋产生, 则会触发cry,eat shopping一系列动作执行. 这个思路就是发布订阅模式. 对应到vue,就是子去通知父亲刷…
ps:App.vue 父组件 Hello.vue 子组件 <!--App.vue :--> <template> <div id="app"> <hello @newNodeEvent="parentLisen" /> </div> </template> <script> import hello from './components/Hello' export default {…
在我们日常的移动端项目开发中,处理滚动列表是再常见不过的需求了,以滴滴为例,可以是这样竖向滚动的列表,如图所示: 微信 —> 钱包—>滴滴出行”体验效果. 什么是 better-scroll better-scroll 是一个移动端滚动的解决方案,它是基于 iscroll 的重写,它和 iscroll 的主要区别在 这里 .better-scroll 也很强大,不仅可以做普通的滚动列表,还可以做轮播图.picker 等等. 不少同学可能用过 better-scroll,我收到反馈最多的问题是:…
组件实例之间的作用域是孤立存在,要让它们之间的信息互通,就必须采用组件的通信方式  props用于父组件向子组件传达信息 1.静态方式 eg: <body> <div id="app"> <my-component message="hello"></my-component> </div> <script> Vue.component('my-component',{ template:&qu…
最近我司项目中需要加入流程图制作功能,于是乎百度各种找可视化绘制拓扑图的轮子,大部分都是国外的,看文档太吃力,不过好在最终让我发现了AntV G6流程图图表库,最新版为2.0,不过编辑器在2.0版本还没有进行开源,所以只能退而求其次,使用了1.2.8版本.希望2.0版本的编辑器尽早开源,在交互方面1.2.8版本还是差了一些. 该组件并非开箱即食,需要根据自己的业务进行修改,右侧属性表单部分如果有时间考虑改为插槽形式,方便以后复用~ 如何将数据进行数据可视化展现? 技术栈 Vue v3.0.1 E…
1.$emit的使用场景 子组件调用父组件的方法并传递数据注意:子组件标签中的时间也不区分大小写要用“-”隔开 子组件: <template> <button @click="emitEvent">点击我</button> </template> <script> export default { data() { return { msg: "我是子组件中的数据" } }, methods: { emit…
TypeScript推出已经很长时间了,在Angular项目中开发比较普遍,随着Vue 3.0的即将推出,TypeScript在Vue项目中使用也即将成为很大的趋势,笔者也是最近才开始研究如何在Vue项目中使用TypeScript进行项目的开发. 准备 阅读博客前希望读者能够掌握如下技能,文章中也会相对应的讲解一些对于TypeScript基础进行讲解.本篇博客基于Vue cli 3.0实践,若读者使用的是Vue cli 2.0的话,需要对其webpack配置进行更改,本文不进行讲解,请读者自行百…
在有些情况下,我们可能需要对一个 prop 进行"双向绑定".不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以修改父组件,且在父组件和子组件都没有明显的改动来源.   这也是Vue官方推荐以 update:myPropName 的模式触发事件取而代之.举个例子,在一个包含 title prop 的假设的组件中,我们可以用以下方法表达对其赋新值的意图: this.$emit('update:title', newTitle) .sync 的使用: //父组件 <templ…
最近使用vue2.0重构项目, 使用vue-cli脚手架构建, 采用webpack模板, 要在项目中使用less进行样式的编写 首先, 打开终端, 在当前项目目录下安装less npm install less less-loader —save 安装成功后,修改webpack.base.conf.js文件, 添加以下代码 在vue文件的style标签上加上 lang=“less”, 这样就可以使用less来编写样式了 <style lang="less"></sty…
在我们使用vue进行开发的过程中,可能会遇到一种情况:当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去: 当我们去看vue文档的时候,会发现有这么一句话:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新.如下代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>vue $set</title> <scri…
mockjs在vue中的使用 安装好vue-cli后 加载模块: npm install mockjs 创建mock.js文件到src目录下的任一合适文件内新建mockjs.js,设置好拦截信息,设置规则可看官网规则 例如下面是模拟的一条数据: import Mock from 'mockjs' export default Mock.mock('msg', {      'name'    : '@name',      'age|1-100': 100,      'color'    :…
此插件git: https://github.com/SortableJS/Vue.Draggable 基于Sortable.js http://www.cnblogs.com/xiangsj/p/6628003.html 使用方法: 一. 下载包:cnpm install vuedraggable -S   (后加-S 保存配置到package.json) 二. 使用: 引入依赖,注册组件 import draggable from 'vuedraggable' ... export defa…
1.npm install --save mescroll.js 2. <template> <div> <!--全部--> <mescroll-vue ref="mescroll0" v-show="tabType==0" :down="getMescrollDown(0)" :up="getMescrollUp(0)" @init="mescrollInit0"…
安装依赖: npm install --save @ckeditor/ckeditor5-vue @ckeditor/ckeditor5-build-classic 要创建编辑器实例,必须首先将编辑器构建和组件模块导入应用程序的根文件中(例如,main.js在由Vue CLI生成时).然后,使用以下Vue.use()方法启用组件: import Vue from 'vue'; import CKEditor from '@ckeditor/ckeditor5-vue'; Vue.use( CKE…
ESLint的用途 1.审查代码是否符合编码规范和统一的代码风格: 2.审查代码是否存在语法错误:  中文网地址 http://eslint.cn/ 使用VSCode编译器在Vue项目中的使用 在初始化项目时选择是否使用ESLint管理代码(选择Y则默认开启)  Use ESLint to lint your code? (Y/n) (此图仅为发小程序的mpvue框架使用) 默认使用的是此标准https://github.com/standard/standard/blob/master/doc…
props 父级: 父级组件中引用子组件,并将自己data下面的giveChild数据绑定在  giveChildData  传给子 <myChild :giveChildData="giveChild">{{isMe}}</myChild> data(){ return{ giveChild:'222' }}, components:{ myChild}   子级: 通过props接收父级传来的数据 props:{ giveChildData:{ type:S…
vue中watch的使用 vue中的watch是一个比较重要的概念,通过他我们可以检测data的变化,下面进行详细的介绍. watch定义方式如下: {[key: string]: string | Function | Object } 即在watch中, 键是一个字符串,它是被观测的对象. 值可以是一个字符串,这个字符串是方法名. 值还可以是一个函数,但不能使用箭头函数的形式,this会出现问题. 值也可以是一个对象,其中包含回调函数可以其他一些选项:比如是否深度遍历. 举例如下: <!DO…
这几种模式是基于订阅观察者模式的,维护一个事件中心,on的时候将事件按名称存在事件中心里,称之为订阅者,然后emit将对应的事件进行发布,去执行事件中心里的对应的监听器. 第一步就是创建一个构造构造,维护一个事件中心events function EventEmiter(){ this.events = {} } $on //event可以是事件名数组 EventEmiter.prototype.on = function(event,cb){ //多个事件 if(event instanceo…
DEMO: <!DOCTYPE html><html> <head> <title>滚动播报</title> <meta charset="UTF-8"> <style> .content { height: 60px; background-color: #2c2c34; overflow: hidden; } .content ul { white-space: nowrap; } .content…
微信 jssdk 在 vue 中的简单使用 import wx from 'weixin-js-sdk'; wx.config({ debug: true, appId: '', timestamp: , nonceStr: '', signature: '', jsApiList: [] }); wx.ready(() => { // do something... }); wx.error((err) => { // do something... }); 以上是微信官方给出的示例代码,但…
下载组件: npm install axios --save npm install qs --save //处理对象防止产生跨域问题 引入: 新建axios文件夹,文件下新建index.js文件 index.js中代码: import Vue from 'vue' import axios from 'axios' import Qs from 'qs' /*挂载到VUE下*/ Vue.prototype.Qs = Qs; Vue.prototype.$http = axios; export…
在我们使用vue进行开发的过程中,可能会遇到一种情况:当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>vue $set</title> <script src="https://static.runoob.com/assets/vue/1.0.11/vue…
首先vue环境搭建成功 第一步: 安装 less 和less-loader 安装less依赖:npm install less less-loader --save 第二步: 修改webpack.base.config.js文件,配置loader加载依赖,让其支持外部的less,在原来的代码上添加 // 此种方法在控制台中标签样式显示的是style标签样式 { test: /\.less$/, loader: "style-loader!css-loader!less-loader",…
最近发现好多小伙伴在面试的过程中会问到vue如何使用less和scss,所以我绝对更新.复习一下less:废话不多说直接进主题: 依赖下载 1.首先使用npm下载依赖: npm install --save less less-loader 2.安装完成后检查是否安装成功: lessc -v 3.如果安装成功后,会显示安装成功后的版本: 引用方法 1.在main.js import less from 'less' Vue.use(less) 2.然后创建一个.vue文件我们开始玩耍了: 注意:…
报错: Method "watch" has type "object" in the component definition. Did you reference the function Method "watch" has type "object" in the component definition. Did you reference the function correctly? 原因: watch 是一个对…
今天在项目中遇到的一个需求: 在一个选项卡功能的页面,出现的问题是,当点击选项卡的某个选项时,会同时加载整个选项卡的数据,本身产品就很大,数据很多,所以这个问题无法忽略: 仔细研究下发现,当刚进入页面时,只会加载当前一个tab的数据,这样是正常的,但当再次点击别的tab时,之前tab的接口就都连带着再次请求一边,只要是不刷新页面,就一直切换tab,一直会有前边的tab数据接口重新请求,项目中tab实现是用的饿了么ui的tab选项卡,在研究了饿了么ui之后发现使用上没有什么问题,而且是子组件的v-…