vue指令03---自动获取焦点(自定义指令)和过滤器的学习

1.1 自动获取焦点

在自动获取焦点的学习中涉及到了一个钩子函数 mounted(),它表示页面一加载进来就执行函数里面的内容,(和window.onload相似,这样有助于理解),mounted 钩子函数的名字不能随便更改,而且不能写在 methods 属性里面

   方法1:  在vue中 通过操作 dom 元素来实现自动获取焦点(即使用原生JS实现)

代码如下:

 1 <html lang="en">
 2   <head>
 3     <title>自动获取焦点</title>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1">
 6     <script src="../lib/vue-2.4.0.js"></script>
 7   </head>
 8   <body>
 9     <div id="app">
10       姓名:<input type="text" id="name">
11     </div>
12     <script>
13       var vm = new Vue({
14         el: ‘#app‘,
15         data: {
16         name: ‘Jack‘
17         },
18         mounted(){ // mounted 是钩子函数,它表示页面一加载进来就执行函数里面的内容,(和window.onload相似)
19                    //mounted 钩子函数的名字不能随便更改,而且不能写在 methods 属性里面
20           //console.log(111);  页面加载完成自动执行 1111
21           document.getElementById(‘name‘).focus()   //原生的JS方法实现的
22         }
23       })
24     </script>
25   </body>
26 </html>

页面效果:

 方法2:  在vue中 通过ref 属性,它表示对Dom 的引用,它的属性值可以随便取,但是不能重复

 1 <html lang="en">
 2   <head>
 3     <title>自动获取焦点</title>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1">
 6     <script src="../lib/vue-2.4.0.js"></script>
 7   </head>
 8   <body>
 9     <div id="app">
10        <!-- 通过ref 属性引用 -->
11       姓名:<input type="text" id="name" ref="nameRef">
12     </div>
13     <script>
14       var vm = new Vue({
15         el: ‘#app‘,
16         data: {
17         name: ‘Jack‘
18         },
19         mounted(){ // mounted 是钩子函数,它表示页面一加载进来就执行函数里面的内容,(和window.onload相似)
20                    //mounted 钩子函数的名字不能随便更改,而且不能写在 methods 属性里面
21           //通过 this.$refs.ref的值 来获取 Dom
22           console.log(this.$refs.nameRef);
23           this.$refs.nameRef.focus()
24         }
25       })
26     </script>
27   </body>
28 </html>

页面效果:

 

方法3:  在vue中 通过自定义指令,自动获取焦点

自定义指令通过一个全局方法Vue.directive()创建,它有两个参数,一是自定义指令的名字,可以随便取,但是全部小写; 另一个是一个对象,表示自定义指令的一些配置项      注:在引用自定义指令是,名字前需要加 v-

示例代码:

 1 <html lang="en">
 2   <head>
 3     <title>通过自定义指令自动获取标点</title>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1">
 6     <script src="../lib/vue-2.4.0.js"></script>
 7   </head>
 8   <body>
 9     <div id="app">
10       姓名: <input type="text" v-myfocus>
11     </div>
12     <script>
13       // 自定义指令通过一个全局方法Vue.directive()创建,它有两个参数,一是自定义指令的名字,可以随便取,但是全部小写; 另一个是一个对象,表示自定义指令的一些配置项
14
15        //创建一个名为 myfocus 的自定义指令,这里实际上创建了一个 v-myfocus 指令,元素中也使用 v-myfocus
16       Vue.directive(‘myfocus‘, {
17         inserted(el, binding){
18          //inserted 是钩子函数,它表示自定义指令插入到标签的时候就执行
19          //inserted()钩子函数有两个参数,el表示使用自定义指令的元素,binding表示自定义指令的信息
20          console.log(el);
21          console.log(binding);
22          el.focus()
23         }
24       })
25       var vm = new Vue({
26         el: ‘#app‘,
27         data: {
28
29         }
30       })
31     </script>
32   </body>
33 </html>

页面效果:

3.1 自定义指令2(自定义指令后面跟一个data中的变量)

实例代码:

 1 <html lang="en">
 2   <head>
 3     <title>通过自定义指令自动获取标点</title>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1">
 6     <script src="../lib/vue-2.4.0.js"></script>
 7   </head>
 8   <body>
 9     <div id="app">
10         <!-- 引用自定义指令 v-mycolor -->
11       姓名: <input type="text"  v-mycolor="color">
12     </div>
13     <script>
14       //创建一个名为 mycolor 的自定义指令。
15       Vue.directive(‘mycolor‘, {
16         inserted(el, binding){
17           console.log(binding);
18           el.style.color = binding.value
19         }
20       })
21       var vm = new Vue({
22         el: ‘#app‘,
23         data: {
24           color: ‘#f00‘,    // 在data中定义一个变量
25         }
26       })
27     </script>
28   </body>
29 </html>

页面效果:

2.  创建过滤器

创建:通过全局方法 Vue.filter() 方法创建过滤器,他有两个参数,第一个是过滤器的名字,第二个是过滤器的处理函数,这个函数有个默认参数,表示要过滤的数据

过滤器的使用:在过滤的数据后面加上管道符 | 过滤器名称 在过滤器名称后面还可以传参数

练习案例代码:

  1 <html lang="en">
  2   <head>
  3     <title>案例练习</title>
  4     <meta charset="UTF-8">
  5     <meta name="viewport" content="width=device-width, initial-scale=1">
  6     <script src="../lib/vue-2.4.0.js"></script>
  7     <style>
  8       #app {
  9         width: 600px;
 10         margin: 100px auto;
 11       }
 12       .top, .middle {
 13         height: 40px;
 14         line-height: 40px;
 15         border: 1px solid #000;
 16         padding-left: 6px;
 17       }
 18       .middle {
 19         margin: 10px 0;
 20       }
 21       table {
 22         border-collapse:collapse;
 23         width: 100%;
 24       }
 25        td,th {
 26         border: 1px solid #000;
 27         padding: 5px;
 28         text-align: center;
 29       }
 30       table th {
 31         background-color: #0094ff;
 32         color: #fff;
 33       }
 34     </style>
 35   </head>
 36   <body>
 37     <div id="app">
 38       <div class="top">
 39         车型:<input type="text" v-model="newType">
 40         车型价格: <input type="text" v-model="newPrice">
 41         <input type="button" value="添加" @click="addData">
 42       </div>
 43       <div class="middle">
 44         车型搜索: <input type="text" placeholder="请输入搜索名称">
 45       </div>
 46       <table border="0">
 47         <thead>
 48           <tr>
 49             <th>车型</th>
 50             <th>车型价格(万)</th>
 51             <th>添加时间</th>
 52             <th>操作</th>
 53           </tr>
 54         </thead>
 55         <tbody>
 56           <tr v-for="(item, index) in list" :key="index">
 57             <td>{{item.type}}</td>
 58             <td>{{item.price}}</td>
 59             <!-- 过滤器的使用:在过滤的数据后面加上管道符 | 过滤器名称   在过滤器名称后面还可以传参数-->
 60             <td>{{item.cTime | timeFilter(‘/‘)}}</td>
 61             <!-- 将index 作为参数传入 -->
 62             <td><a href="#" @click="delData(index)">删除</a></td>
 63           </tr>
 64           <tr v-if="list.length === 0">
 65             <td colspan="4">没有品牌数据</td>
 66           </tr>
 67         </tbody>
 68       </table>
 69     </div>
 70     <script>
 71       // 通过全局方法Vue.filter()方法创建过滤器,他有两个参数,第一个是过滤器的名字,第二个是过滤器的处理函数,这个函数有个默认参数,表示要过滤的数据
 72
 73       //创建一个时间过滤器 timeFilter,   time 是默认参数 seprator 参数表示时间之间的间隔符号
 74       Vue.filter(‘timeFilter‘, function(time, seprator){
 75         console.log(time);   // 控制台:Mon Oct 22 2018 22:38:05 GMT+0800 (中国标准时间)
 76         var y = time.getFullYear();
 77         var m = time.getMonth()+1;
 78         var d = time.getDate();
 79         var h = time.getHours();
 80         var m = time.getMinutes();
 81         var s = time.getSeconds();
 82         return y + ‘-‘ + m + ‘-‘ + d +  ‘ ‘ + h + ‘:‘ + m + ‘:‘ + s
 83         //return y + seprator + m + seprator + d +  ‘ ‘ + h + seprator + m + seprator + s
 84       })
 85       var vm = new Vue({
 86         el: ‘#app‘,
 87         data: {
 88           newType: ‘‘,
 89           newPrice: ‘‘,
 90           list: [
 91             {type: ‘宝马‘, price: 30, cTime: new Date()},
 92             {type: ‘奔驰‘, price: 20, cTime: new Date()},
 93             {type: ‘奥迪‘, price: 23, cTime: new Date()}
 94           ]
 95         },
 96         methods: {
 97           delData(ind){
 98             this.list.splice(ind, 1);   //splice(删除项的索引, 删除个数)
 99           },
100           addData(){
101             this.list.push({type: this.newType, price: this.newPrice, cTime: new Date()});
102           }
103         }
104       })
105     </script>
106   </body>
107 </html>

页面显示效果:

注意:若时间和日期之间的链接符号想改变的话,可以通过传参的方式更改。例如,在过滤器的处理函数中添加除了默认参数(这里是time)的第二个参数(这里是seprator),  并且在return 中替换原有的符号(‘-’),同时在使用过滤器的数据中的过滤器添加参数(此参数为要更改的符号)

原文地址:https://www.cnblogs.com/lirun-rainbow/p/9833806.html

时间: 2024-10-09 10:57:14

vue指令03---自动获取焦点(自定义指令)和过滤器的学习的相关文章

django中自定义标签和过滤器

想要实现自定义标签和过滤器需要进行准备工作: 准备(必需)工作: 1  在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为polls的app下创建了一个templatetags的包,并在该包下创建了一个名为mytags的文件.那么目录结构看起来应该就像这样: polls/ __init__.py models.py templatetags/ __init__.py mytags.py views.py 2  settings文件中的INSTALLD_A

Django(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

模板层:变量.过滤器.标签.自定义标签和过滤器 将页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式 # django模板修改的视图函数 def current_time(req): from django.template import Template,Context now=datetime.datetime.now() t=Template('<html><body>现在时刻

django 自定义标签和过滤器

django 自定义标签和过滤器 Django支持自定义标签和过滤器.起初还不太重视它这项功能,但最近试了试自定义标签.发现django这个功能实在是太爽了. 首先在你项目的一个app中建立一个python源文件夹,(即文件夹里面要包含一个__init__.py.)文件夹名为templatetags.  此文件夹便是存放自定义标签和过滤器的源码的地方了. 再如果是在templatetags文件夹中定义了标签,如 test_tags.py,要如何使用我们自定义的test_tags.py呢.很简单,

vue.js之过滤器,自定义指令,自定义键盘信息以及监听数据变化

一.监听数据变化 1.监听数据变化有两种,深度和浅度,形式如下: vm.$watch(name,fnCb); //浅度 vm.$watch(name,fnCb,{deep:true}); //深度监视 2.实例用法 2.1-1浅度监听:当点击页面,弹出发生变化了,a的值变为1,b的值变为101 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

在Vue中输入框自动获取焦点的三种方式

原生JS操作DOM使用mounted钩子函数,它表示页面一加载进来就执行函数里面的内容(和window.onload类似)1//html部分 编号:<input type="text" v-model='newId' id='inputId'>//vue对象var vm = new Vue({ el: '#app', data: { newId: '', }, // 注意:mounted钩子函数的名字不能随便取,而且它不能写在methods属性. mounted () {

Django框架自定义标签和过滤器

自定义过滤器 '''定义一个无参数过滤器''' 1:#:在当前的应用中创建一个templatetags的文件夹(必须叫这个名字),然后在文件夹中创建一个python文件,名字随便 2:#在新建的python中引入django模块的template类,然后实例化一个register对象,对象的名字必须是register from django import template register = template.Library()#register对象名字不可更改 3:#在新建的python中定

Django下自定义标签和过滤器

---恢复内容开始--- 第一步:确保setting中的INSTALL_APPS配置当前的app,要不然Django无法找到自定义的simple_tag. 第二步:在app中创建templatetags模块(模块名只能是templatetags) 第三步:创建任意的.py文件  比如:my_tags.py from django import template from django.utils.safestring import mark_safe register = template.Li

Vue.js学习 Item13 – 指令系统与自定义指令

基础 除了内置指令,Vue.js 也允许注册自定义指令.自定义指令提供一种机制将数据的变化映射为 DOM 行为. 可以用 Vue.directive(id, definition) 方法注册一个全局自定义指令,它接收两个参数指令 ID 与定义对象.也可以用组件的 directives 选项注册一个局部自定义指令. 钩子函数 定义对象可以提供几个钩子函数(都是可选的): bind:只调用一次,在指令第一次绑定到元素上时调用. update: 在 bind 之后立即以初始值为参数第一次调用,之后每当

Vue组件--局部过滤器 和 局部自定义指令

注意:     局部过滤器 和 局部自定义指令 需要在组件内部定义,并且只有当前组件才可以使用,组件外无效 1.  定义局部过滤器 使用filters来定义,他是一个对象,里面是以过滤器名称为名的一个函数,它time是默认的参数,即需要过滤的数据.示例如下 1 <body> 2 <div id="app"> 3 <one></one> <!--应用组件 --> 4 <two></two> 5 </