vue 混入 mixin,自定义指令,过滤器
vue 混入 mixin ,分发 vue 组件中重复的功能
局部的书写格式
// mixin.js
var mymixin = { // 这是一个对象:对象里面的写法与组件里面的写法一模一样,组件该怎么写,这就怎么写
data(){
return {
a:"hello world"
}
}
}
export default mymixin // 将对象暴露出去
vue 中组件的写法
import mymixin from "./mixin.js" // 引入 mixin.js 文件
export default {
data(){
b:"hello world"
},
mixins:[mymixin], // mixins 的用法,值是一个数组,里面放着 mymixin 的对象
mounted(){
console.log(this) // 组件实例上 data 属性上便拥有了 a 属性了,而且我们在别的组件上引入 mixin.js 的话,也会拥有 a 属性
}
}
注意事项:
我们我们组件中有 data 属性,而 mixin.js 中也有 data 属性,vue 会如何处理呢?
数据对象递归合并(就是说:将 组件中的 data 属性,和 mixin.js 中的 data 属性,合并为一个 data 属性),那么还有一种情况,组件 data 中有一个 a 属性,mixin.js 的 data 中也有一个
a 属性,合并的时候,就只会合并 组件中 a 属性,mixin.js 中的 a 属性,便会被抛弃
2. 全局注入混合 mixin
上面的例子,是局部的使用 mixin ,我们每次使用都需要引入 mixin.js 的文件,那么我们所有的组件都拥有共同的内容,那么使用全局注入 mixin 再好不过了
使用方法:main.js 中
Vue.mixin({ // 全局注入混合对象
data(){
return {
a:"你好,世界"
}
}
})
这样我们的所有组件 data 中都会有 a 这个属性
当然上面的例子只是以 data 为案例,我们组件中的东西都可以写在 mixin 中,只有一个条件,那就是组件中的东西相同
自定义指令:Vue.directive(参数一,参数二) // 参数一:指令的名字 不允许带 v-,参数二:对象
案例:如 v-focus 全局注册
Vue.directive('focus',{
// 当被绑定的元素插入到 dom 中时
inserted(el){
console.log(el) // 被绑定自定义指令的 dom 元素
el.focus() // 元素的自动聚焦方法
}
})
参数二:对象上拥有的钩子函数
bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置
inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)
update:当组件的 VNode 更新时调用
钩子函数的参数:
el:指令所绑定的元素,可以用来直接操作 DOM 。
binding:是一个对象,name 指令名,value:指令值
expression:字符串形式的表达式
自定义指令的使用
<input v-focus />
过滤器 // 对数据的处理
标识符 | 俗称管道符
在 vue 组件中
局部
<h1> {{a | upper}} <h1> // 这样我们便得到的大写的 HELLO
export default {
data(){
return {
a:"hello"
}
},
filters:{
upper(value){
console.log(value) // 代表管道符前面的数据
return value.toUpperCase() // 必须 return 对前面数据的处理
}
}
}
全局处理:在 main.js 中
Vue.filter('upper', function (value) {
return value.toUpperCase() // 必须 return
})
// 这样的话所有组件都可以使用 upper 的管道符来将 字符串变大写
vue 混入 mixin,自定义指令,过滤器的更多相关文章
- vue教程2-07 自定义指令
vue教程2-07 自定义指令 自定义指令: 一.属性: Vue.directive(指令名称,function(参数){ this.el -> 原生DOM元素 }); <div v-re ...
- Vue.js 第2章 钩子函数&自定义指令&过滤器&计算属性&侦听器
目标 钩子函数 自定义指令 自定义过滤器 计算属性 监听属性 局部自定义指令 为什么需要自定义指令 为了复用,为了代码的灵活 指令的分类:全局指令,局部指令 在vm外面创建的指令 通过Vue.dire ...
- 在Vue中通过自定义指令获取元素
vue.js 是数据绑定的框架,大部分情况下我们都不需要直接操作 DOM Element,但在某些时候,我们还是有获取DOM Element的需求的: 在 vue.js 中,获取某个DOM Eleme ...
- Vue API(directives) 自定义指令
前言:除了vue的内置指令以外,我们可以定义自定义指令.内置指令表相见:https://www.cnblogs.com/ilovexiaoming/p/6840383.html 我们定义一个最简单的 ...
- vue视频: 自定义指令 && 拖拽 && 自定义键盘信息
v-textv-forv-html 指令: 扩展html语法 自定义指令:1. 自定义属性指令: Vue.directive(指令名称,function(参数){ this.el -> 原生DO ...
- Vue.js:自定义指令
ylbtech-Vue.js:自定义指令 1.返回顶部 1. Vue.js 自定义指令 除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令. 下面我们注册一 ...
- 在vue中创建自定义指令
原文:https://dev.to/ratracegrad/creating-custom-directives-in-vue-58hh 翻译:心上有杨 指令是带有 v- 前缀的特殊属性.指令的作用是 ...
- 浅析vue混入(mixin)
vue中的混入,可以在一定程度上提高代码的复用性.通俗来说,混入类似于“继承”,当前组件对象继承于组件对象,一般情况下遵循“就近原则”.但是与继承不同的是,继承一般都跟随着属性的重写与合并,混入在不同 ...
- Vue笔记--通过自定义指令实现按钮操作权限
经常做中后台系统,此类系统的权限是比较重要,拿自己做过的一些项目做个笔记. Vue实现的中后台管理系统.按钮操作权限的空置一般都是通过自定义指令Vue.directive. <el-button ...
随机推荐
- java基础3(异常)
1.异常的体系 1)请描述异常的继承体系 异常继承体系为:异常的根类是 java.lang.Throwable,其下有两个子类:java.lang.Error 与 java.util.Exceptio ...
- element-ui 中 el-table 根据scope.row行数据变化动态显示行内控件
加入本行的数据为scope.row,其数据格式为 { "propertyId": 4, "propertyName": "标题", &quo ...
- win10下当前目录右键添加CMD快捷方式
在某个文件夹下右键打开cmd,这样不用每次都在默认情况下切换目录.无奈win10 1703版本下shift+右键不能打开cmd,只能打开powershell. 首先,在桌面新建一个文本文档. Wind ...
- 【Day1】1.了解Python
视频地址(全部) https://edu.csdn.net/course/detail/26057 课件地址(全部) https://download.csdn.net/download/gentl ...
- 7、Nginx基础Http原理
1Http协议概述 HTTP全称HyperText Transfer Protocol中文名为超文本传输协议 1.1.什么是超文本? 包含有超链接(Link)和各种多媒体元素标记的文本.这些超文本文件 ...
- Django简介及安装
Django简介及安装 我们都知道,Django是一种基于Python的Web开发框架. 那么,什么是Web开发?Web开发指的是开发基于B/S架构,通过前后端的配合,将后台服务器的数据在浏览器上展现 ...
- windows安装PostgreSQL
犹豫了一小下,初学不在linux下安装sql,虽然说书上有,还是想记录一下,以后好找 入门的书籍是SQL基础教程第二版,图书馆搜刮来的,毕竟要还 下载页面 http://www.enterprised ...
- Tomcat基础知识
介绍Tomcat之前先介绍下Java相关的知识. 各常见组件: 1.服务器(server):Tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例:因此,一台物理服务器上可以在启动多个JV ...
- numpy的ndarray数组如何reshape成固定大小
在做肺结节检测的时候,遇到dicom文件reshape之后尺寸大小不一.因为大下不一,numpy.reshape又无法重塑成指定大小的.最后还是在一个大牛的代码中找到了解决方法. VL = np.lo ...
- Linux/Ubantu 安装 idea
wget 使用 wget url (这里的url就是你要下载idea的网站) 在idea官网中 找到 direct link 右键复制链接 在 linux 中 打开 终端命令窗口 (Ctrl +Alt ...