一天带你入门到放弃vue.js(三)
自定义指令
在上面学习了自定义组件接下来看一下自定义指令
自己新建的标签赋予特殊功能的是组件,而指定是在标签上使用类似于属性,以v-name开头,v-on,v-if...是系统指令! v-是表示这是vue的指令if,for等是指令的名字!接下来看一下如何创造一个属于自己的指令吧!
全局指令,指令名称focus
// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
// 当被绑定的元素插入到 DOM 中时……
inserted: function (el) {
// 聚焦元素
el.focus()
}
})
当然这个和自定义组件一样也是拥有局部指令的,在新建的实例种添加directives属性就行
directives: {
  focus: {
    // 指令的定义
    inserted: function (el) {
      el.focus()
    }
  }
}
指令配置以及修饰符
看下简单自定义指令
<div v-test:true.bottom.right="hw">
main.js
Vue.directive("test",function(el,binding){
    //el是指令所处的元素
    //binding是指令参数的对象集合
    //上述中:true是参数(arg)
    var arg=binding.arg;
    //以.为名的修饰符.bottom.right等是修饰符,获取到是一个数组
    var modifiers=binding.modifiers
    //而这个指定的值通过value获取
    var val= binding.value
})
过滤器
Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。
html
<!-- 在双花括号中 -->
{{ message | capitalize }} <!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
在main.sj中使用filter建立自己的过滤器(使用这个mm转换m 小demo)
单位换算
<br><br><br>
<input type="text" v-model="length">mm = {{length | meter}}
main.js
Vue.filter('meter',function(val,arg){
    val =val || 0;
    arg=arg || "m"
    return (val/1000).toFixed(2) +arg;
})
//实例化Vue
new Vue({
    el:"#app",
    data:{
        length:10
    }
})
修改参数
{{length | meter('m')}}
mixins(混合)
比如在定义组件或者新建实例时候需要用到大量重复的methods,data,可以用这个minxins替代
var base={
     data:function(){
        return{
            visiable:false
        }
    },
    methods:{
        toggle:function(){
            this.visiable= !this.visiable
        },
        show:function(){
            console.log(11)
            this.visiable=true
        },
        hide:function(){
            this.visiable=false
        }
    }
}
//在新建组件时可以直接使用base的对象,mixins:['base'],存储的value要和上面存储的保存一致
Vue.component('show',{
    template:`<div>
        <button @click="toggle">点击</button>
        <p v-if="visiable">干哈啊时代光华的规划过圣诞节的胳膊上价格多少噶啥的</p>
</div>`,
    mixins:[base]
})
slot(插槽)
有时候我们一个组件由多部分组成,我们需要去改别其内容则需要插槽去改变
//组件模板
<template id="panel-tpl">
<div>
<div>标题</div>
<div>content></div>
<div>footer</div>
</div>
</template>
//main.js新建一个panel组件
Vue.component("panel",{
template:"#panel-tpl"
})
new Vue({
el:"#app"
})
html页面中我们可以调用这个panel调取
<panel></panel>
<panel></panel>
<panel></panel>
但是我们需要去改变panel模板的内容如何做呢
<template id="panel-tpl">
<div>
<div>标题</div>
<div><slot></slot></div>
<div>footer</div>
</div>
</template>
修改内容
<panel>我是新内容</panel>
这样content的内容就修改了,那么想去修改这个title,和footerne,欧这样的方法是不支持哪,Vue这么笨,你还浪费我一天时间学这个干嘛!早点放弃吧!诶,别着急慢慢看!实现这个这功能我们需要给每个部分的插槽(slot)指定一个name
<template id="panel-tpl">
<div>
<div><slot name="header"></slot></div>
<div><slot name="content"></slot></div>
<div><slot name="footer"></slot></div>
</div>
</template>
执行使用
<panel>
<div slot="header">这是新的头部</div>
<div slot="content">内容区域</div>
<div slot="footer"></div>
</panel>
那么你会发现头部中间内容改了,底部没有指定是空白的,那么你可能就是又有需求了,怎么让底部保存一个默认的,人就是这么JIAN(详见程序员与产品经理间的风波!手动滑稽!!!) 底部取一个默认值,在不指定时候是默认值,指定的时候是自己的定义内容!
<template id="panel-tpl">
<div>
<div><slot name="header"></slot></div>
<div><slot name="content"></slot></div>
<div><slot name="footer">我是一个默认的底部</slot></div>
</div>
</template>
把默认内容写在插槽中,这样保持了默认情况!
好了!一看写了5000多字了,一天带你从入门到放弃Vue.js系列结束!如有疑问可以下方留言!!!
转自 十月梦想博客 。
原文地址《一天带你入门到放弃vue.js(一)》
相关文章:
一天带你入门到放弃vue.js(三)的更多相关文章
- 一天带你入门到放弃vue.js(二)
		接下来我们继续学习一天带你入门到放弃系列vue.js(二),如有问题请留言讨论! v-if index.html <div id="app"> <p v-if=& ... 
- 一天带你入门到放弃vue.js(一)
		写在前面的话! 每个新的框架入手都会进行一些列的扯犊子!这里不多说那么多!简简单单说一下vue吧! Vue.js是目前三大框架(angular,vue,react)之一,是渐进式js框架,据说是摒弃了 ... 
- 5分钟带你入门vuex(vue状态管理)
		如果你之前使用过vue.js,你一定知道在vue中各个组件之间传值的痛苦,在vue中我们可以使用vuex来保存我们需要管理的状态值,值一旦被修改,所有引用该值的地方就会自动更新,那么接下来我们就来学习 ... 
- vue.js 三种方式安装--npm安装
		Vue.js是一个构建数据驱动的 web 界面的渐进式框架. Vue.js 的目标是通过简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易上手,便于与第三方库或既有项目整合. ... 
- vue.js 三(数据交互)isomorphic-fetch
		至于fetch的介绍,在这里就不多说了,官方和网络上的说明不少 之前使用jquery的Ajax朋友,可以尝试一下使用一下这个新的api 推荐使用isomorphic-fetch,兼容Node.js和浏 ... 
- 【转】vue.js三种安装方式
		Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ... 
- vue.js三种安装方式
		Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ... 
- vue.js 三种方式安装
		Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ... 
- NodeJs 入门到放弃 — 网络服务器(三)
		码文不易啊,转载请带上本文链接呀,感谢感谢 https://www.cnblogs.com/echoyya/p/14484454.html 目录 码文不易啊,转载请带上本文链接呀,感谢感谢 https ... 
随机推荐
- Pthread 用法笔记
			什么是线程? 从技术上讲,一个线程被定义为一个独立的指令流. 一个进程可以包含一个或多个线程. 线程操作包括线程创建,终止,同步(连接,阻塞),调度,数据管理和进程交互. 进程内的所有线程共享: 相同 ... 
- [BOI2004]Sequence 数字序列(左偏树)
			PS:参考了黄源河的论文<左偏树的特点及其应用> 题目描述:给定一个整数序列\(a_1, a_2, - , a_n\),求一个递增序列\(b_1 < b_2 < - < ... 
- 任意模数NTT学习笔记
			这两天有点颓,所以东西学的也很慢...这个一眼就能推出来的活生生卡了我两天.. 说几个细节: 柿子: \[f*g = (\frac{f}{M} +f\%m)*(\frac{g}{M} +g\%m) \ ... 
- es6常用的
			常用: let关键字: 1. 作用: * 与var类似, 用于声明一个变量2. 特点: * 在块作用域内有效 * 不能重复声明 * 不会预处理, 不存在提升3. 应用: * 循环遍历加监听 * 使用l ... 
- springboot2 pagehelper 使用笔记
			作者:cnJun 博客专栏: https://www.cnblogs.com/cnJun/ pom.xml <parent> <groupId>org.springframew ... 
- JGUI源码:从头开始,建一个自己的UI框架(1)
			开篇 1.JGUI是为了逼迫自己研究底层点的前端技术而做的框架,之前对web底层实现一直没有深入研究,有了技术瓶颈,痛定思痛从头研究, 2.虽然现在vue技术比较火,但还在发展阶段,暂时先使用JQue ... 
- /etc/profile文件被改坏导致命令不可用
			这几天在装一个软件,设置环境变量的时候,不小心把/etc/profile文件改坏了(就是没配置对),在source /etc/profile后导致所有命令都不可用了.出现如下报错: -bash: xx ... 
- luogu P5286 [HNOI2019]鱼
			传送门 这题真的牛皮,还好考场没去刚( 这题口胡起来真的简单 首先枚举D点,然后对其他所有点按极角排序,同时记录到D的距离.然后按照极角序枚举A,那么鱼尾的两个点的极角范围就是A关于D对称的那个向量, ... 
- Faster RCNN 学习笔记
			下面的介绍都是基于VGG16 的Faster RCNN网络,各网络的差异在于Conv layers层提取特征时有细微差异,至于后续的RPN层.Pooling层及全连接的分类和目标定位基本相同. 一). ... 
- pdb调试神器使用终极指南
			pdb为python程序实现了一个交互式调试环境.它包括一些特性,可以暂停程序,查看变量值,以及逐步监视程序执行,从而能了解程序具体做了什么,并查找逻辑中存在的bug. 启动调试工具 使用pdb的第一 ... 
