vue自定义指令获取焦点及过滤器修改时间
<template id="comp3">
<div id="app">
<model :list="selectedlist" :isactive="isActive" v-cloak @change="changeOverlay" @modify="add" @msearch="search"></model>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">网课管理</h3>
</div>
<div class="panel-body form-inline">
<label>
搜索名称关键字:
<!-- 自定义获取焦点 指令 -->
<input type="text" class="form-control" v-focus v-model="keywords" id="search">
<input type="button" value="搜索" class="btn btn-primary" />
</label>
<label>
ID:
<input type="text" class="form-control" v-model="id">
</label>
<label>
网课名称:
<input type="text" class="form-control" v-model="subClassifyName" @keyup.enter="add">
</label>
<input type="button" value="添加" class="btn btn-primary" @click="add()" />
</div>
</div>
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th class="text-center">网课ID</th>
<th class="text-center">网课名称</th>
<th class="text-center">创建时间</th>
<th class="text-center">更新时间</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) of search(keywords)" :key="item.id">
<td class="text-center" v-text="item.id"></td>
<td class="text-center" v-text="item.subClassifyName"></td>
<td class="text-center" v-text="">{{item.createTime | dateFormat}}</td>
<td class="text-center" v-text="">{{item.updateTime | dateFormat}}</td>
<td class="text-center">
<!--data-toggle="modal" data-target="#update"-->
<a href="#" @click="showOverlay(index)">
<input type="button" data-toggle="modal" data-target="#compmodify_dialog" class="btn btn-primary" value="修改" />
</a>
<a href="#" @click.prevent="del(item.id)">
<input type="button" class="btn btn-danger" value="删除" />
</a>
</td>
</tr>
</tbody>
</table>
<!-- 底部索引 -->
<div class="box-pagination">
<ul class="pagination">
<li><a href="#" aria-label="Previous" @click="getpageinfo(1)">首页</a></li>
</ul>
<ul class="pagination">
<li><a href="#" @click="getprepageinfo()">«</a></li>
</ul>
<ul v-for="i in page" class="pagination">
<li><a href="#" @click="getpageinfo(i)">{{i}}</a></li>
</ul>
<ul class="pagination">
<li><a href="#" @click="getaftpageinfo()">»</a></li>
</ul>
<ul class="pagination">
<li><a href="#" aria-label="Previous" @click="getpageinfo(page)">尾页</a></li>
</ul>
</div>
</div>
</template>
template
// 网课管理 (comp3)
var register = {
template: '#comp3',
data() {
return {
isActive: false,
selected: -1,
selectedlist: {},
classifyName: '',
keywords: '',
id: '',
subClassifyName: '',
creatTime: '',
updateTime: '', pagenum: '',
page: '', list: [],
}
},
props: ['clist'],
methods: {
// 修改数据
showOverlay(index) {
this.selected = index;
this.selectedlist = this.list[index];
this.changeOverlay();
},
// 点击保存按钮
modify(arr) {
if (this.selected > -1) {
Vue.set(this.list, this.selected, arr);
this.selected = -1;
} else {
this.list.push(arr);
}
this.setSlist(this.list);
this.changeOverlay();
},
// 添加
add: function() {
//获取id subClassifyName 加入到数组
var car = {
id: this.id,
subClassifyName: this.subClassifyName,
createTime: new Date()
}
this.list.push(car)
/*重置id subClassifyName 让对话栏里值空*/
this.id = this.subClassifyName = ''
},
// 发起get请求后通过.then获取服务器返回的内容
getpageinfo(pagenum) {
this.pagenum = pagenum;
this.$http.get('http://10.0.41.100:8096/course/list/' + pagenum).then(function(result) {
this.list = result.body.list
this.page = Math.ceil(result.body.total / 5)
/*alert(Math.ceil(result.body.total/5))*/
})
},
getprepageinfo() {
if (this.pagenum > 0) {
this.pagenum = this.pagenum - 1;
}
/*alert(pagenum)*/
this.$http.get('http://10.0.41.100:8096/course/list/' + this.pagenum).then(function(result) {
this.list = result.body.list
this.page = Math.ceil(result.body.total / 5)
})
},
getaftpageinfo() {
if (this.pagenum < this.page) {
this.pagenum = this.pagenum + 1;
}
/*alert(pagenum)*/
this.$http.get('http://10.0.41.100:8096/course/list/' + this.pagenum).then(function(result) {
this.list = result.body.list
this.page = Math.ceil(result.body.total / 5)
}) },
getinfo() {
this.$http.get('http://10.0.41.100:8096/course/list/' + '1').then(function(result) {
this.list = result.body.list
this.page = Math.ceil(result.body.total / 5)
/*alert(Math.ceil(result.body.total/5))*/
}) },
/*根据id找到数据用list的 splice方法删除*/
del(id) {
this.list.some((item, i) => {
if (item.id == id) {
this.list.splice(i, 1)
return true;
}
})
},
/*更改覆盖*/
changeOverlay() {
// 重置控件状态
this.selected = -1;
this.isActive = !this.isActive;
this.createTime = new Date();
},
/*查询*/
search(keywords) {
/*includes() 检索该字符串中是否包含指定字符 是 返回*/
return this.list.filter(item => {
if (item.subClassifyName.includes(keywords)) {
return item
}
})
}
},
created() { // 模板加载完成后立刻请求数据
this.getinfo();
}
}
// 网课管理 的模态框
Vue.component('model', {
props: ['list', 'isactive', 'selectedlist', ],
template: "#compmodify",
computed: {
modifylist() {
return this.list;
}
},
methods: {
changeActive() {
this.$emit('change');
},
modify() {
this.$emit('add', this.modifylist);
}
}
});
vue
/*1、日期过虑器--全局*/
Vue.filter('dateFormat', function(dateStr, pattern = "") {
// 根据给定字符串 得到特定时间 yyyy-mm-dd
var dt = new Date(dateStr)
var y = dt.getFullYear()
var m = dt.getMonth() + 1 //month从0开始
var d = dt.getDate() if(pattern.toLowerCase() === 'yyyy-mm-dd') { //toLowerCase() 转换成小写
return `${y}-${m}-${d}`
} else {
var hh = dt.getHours()
var mm = dt.getMinutes()
var ss = dt.getSeconds()
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
})
/*2、自动获取光标--用Vue.directive()定义全局指令*/
Vue.directive('focus', {
inserted: function(el) { // 表示元素插入到DOM中的时候,会执行inserted函数
el.focus()
},
})
Js
vue自定义指令获取焦点及过滤器修改时间的更多相关文章
- vue自定义指令实例使用(实例说明自定义指令的作用)
在写vue项目的时候,我们经常需要对后台返回的数据进行大量的渲染操作,其中就包含了大量的对特殊数据的进一步处理,比如说时间戳.图片地址.特殊数据显示等等特殊数据处理改进. 其实遇到这种情况,通过Vue ...
- Vue自定义指令使用方法详解 和 使用场景
Vue自定义指令的使用,具体内容如下 1.自定义指令的语法 Vue自定义指令语法如下: Vue.directive(id, definition) 传入的两个参数,id是指指令ID,definitio ...
- vue 自定义指令的使用案例
参考资料: 1. vue 自定义指令: 2. vue 自定义指令实现 v-loading: v-loading,是 element-ui 组件库中的一个用于数据加载过程中的过渡动画指令,项目中也很少需 ...
- vue自定义指令clickoutside使用以及扩展用法
vue自定义指令clickoutside使用以及扩展用法 产品使用vue+element作为前端框架.在功能开发过程中,难免遇到使用element的组件没办法满足特殊的业务需要,需要对其进行定制,例如 ...
- vue自定义指令clickoutside扩展--多个元素的并集作为inside
都是个人理解,如果发现错误,恳请大家批评指正,谢谢.还有我说的会比较啰嗦,因为是以自身菜鸡水平的视角来记录学习理解的过程,见谅. 1.前言 产品使用vue+element作为前端框架.在功能开发过程中 ...
- Vue自定义指令使用场景
当你第一次接触vue的时候,一定会使用到其中的几个指令,比如:v-if.v-for.v-bind...这些都是vue为我们写好的,用起来相当的爽.如果有些场景不满足,需要我们自己去自定义,那要怎么办呢 ...
- vue 自定义指令的魅力
[第1103期]vue 自定义指令的魅力 点点 前端早读课 2017-11-08 前言 很多事情不能做过多的计划,因为计划赶不上变化.今日早读文章由富途@点点翻译分享. 正文从这开始- 在你初次接触一 ...
- vue自定义指令
Vue自定义指令: Vue.directive('myDr', function (el, binding) { el.onclick =function(){ binding.value(); } ...
- vue自定义指令(Directive中的clickoutside.js)的理解
阅读目录 vue自定义指令clickoutside.js的理解 回到顶部 vue自定义指令clickoutside.js的理解 vue自定义指令请看如下博客: vue自定义指令 一般在需要 DOM 操 ...
随机推荐
- celery结合redis 使用
使用 Redis¶ 安装¶ 对 Redis 的支持需要额外的依赖.你可以用 celery[redis] 捆绑 同时安装 Celery 和这些依赖: $ pip install -U celery[re ...
- [window] 使用Pyhton轻便好用的spyder IDE进行代码分析时如何指定相关的配置文件
spyder 使用pylint这个第三方库进行代码检查,其实pylint使用的代码规范默认也是pep8,不过该库还有 其它用途,在这里我专门写写在代码分析时,如何指定配置文件 一般来说,使用spyde ...
- SQL—事物
[选择题]以下哪个选项是DBMS的基本单位,是构成单一逻辑工作单元的操作集合. A.进程 B.SQL C.事务 D.文件 分析: (1)一个事务包含一个或多个SQL语句,是逻辑管理的工作单元(原子单元 ...
- Activiti之Idea生成png图片及解决乱码问题(四)
IDEA 工具中的操作方式 第一步:将 holiday.bpmn 文件改为扩展名 xml 的文件名称: holiday.xml修改前的 bpmn 文件,效果如下: 第二步: 在 holiday.xml ...
- 【RabbitMQ】Centos7安装RabbitMQ
介绍 RabbitMQ 是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务 ...
- 【CF1256F】Equalizing Two Strings(逆序对)
题意:给定两个长度均为n且由小写字母组成的字符串,可以进行若干次操作,每次从两个串中分别选一个长度相等的子串进行翻转,问是否存在能使两串相等的一系列操作方案 n<=2e5 思路:首先如果每种字母 ...
- 报错信息:ORA-00979:不是GROUP BY表达式
如图所示 参考:https://blog.csdn.net/linan0930/article/details/16508025 解决方案:即select 列表项中不存在的列可以出现在group by ...
- 获取浏览区变化的方法resize() 方法
当调整浏览器窗口的大小时,发生 resize 事件. resize() 方法触发 resize 事件,或规定当发生 resize 事件时运行的函数. <html> <head> ...
- CSS札记(一):CSS选择器
一.语法规则 选择器{ 属性1:属性值1; 属性2:属性值2; ...... } /*注释*/ 二.如何在html中应用CSS 1. 外部引用css文件 css文件:css/layout.css(cs ...
- 尚硅谷Docker---1-5、docker简介
尚硅谷Docker---1-5.docker简介 一.总结 一句话总结: docker是环境打包:有点像windows镜像 docker的实质:缩小版.精细版.高度浓缩版的一个小型的linux系统 1 ...