zoukankan      html  css  js  c++  java
  • Vue--过滤器(私有和公有)

    一.过滤器的基本使用

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7     <title>Document</title>
     8 </head>
     9 <body>
    10      <div id="app">
    11         {{Date()|dateFrm}}
    12      </div>
    13 </body>
    14 <script src="vue2.4.4.js"></script>
    15 <script>
    16     new Vue({
    17         el:"#app",
    18         data:{},
    19         methods:{},
    20         mounted:{},
    21         filters:{
    22             // 过滤器中方法的第一个参数第一个参数是:当前调用过滤器的对象数据
    23             dateFrm:function(time){
    24                 // return "2017-11-16";
    25                 console.log(time);
    26                 
    27             }
    28         }
    29     });
    30 </script>
    31 </html>

    二.私有过滤器使用实例

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 
      4 <head>
      5     <meta charset="UTF-8">
      6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
      7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
      8     <title>Document</title>
      9     <style>
     10         #app {
     11              600px;
     12             margin: 10px auto;
     13         }
     14 
     15         .tb {
     16             border-collapse: collapse;
     17              100%;
     18         }
     19 
     20         .tb th {
     21             background-color: #0094ff;
     22             color: white;
     23         }
     24 
     25         .tb td,
     26         .tb th {
     27             padding: 5px;
     28             border: 1px solid black;
     29             text-align: center;
     30         }
     31 
     32         .add {
     33             padding: 5px;
     34             border: 1px solid black;
     35             margin-bottom: 10px;
     36         }
     37     </style>
     38 </head>
     39 
     40 <body>
     41     <div id="app">
     42         <div class="add">
     43             编号: <input id="id" v-color="color" v-focus="focus" type="text" v-model="id">品牌名称: <input v-model="name" type="text">
     44             <button @click="add">添加</button>
     45         </div>
     46         <div class="add">品牌名称:<input type="text"></div>
     47         <div>
     48             <table class="tb">
     49                 <tr>
     50                     <th>编号</th>
     51                     <th>品牌名称</th>
     52                     <th>创立时间</th>
     53                     <th>操作</th>
     54                 </tr>
     55                 <tr v-if="list.length <= 0">
     56                     <td colspan="4">没有品牌数据</td>
     57                 </tr>
     58                 <!--加入: key="index" 时候必须把所有参数写完整  -->
     59                 <tr v-for="(item,key,index) in list" :key="index">
     60                     <td>{{item.id}}</td>
     61                     <td>{{item.name}}</td>
     62                     <td>{{item.ctime | dateFrm("/") |addNoon}}</td>
     63                     <!-- 使用vue来注册事件时,我们在dom元素中是看不到的 -->
     64                     <td><a href="javascript:void(0)" @click="del(item.id)">删除</a></td>
     65                 </tr>
     66             </table>
     67         </div>
     68 
     69     </div>
     70 </body>
     71 
     72 </html>
     73 <script src="vue2.4.4.js"></script>
     74 <script>
     75     // 先将自定义指令定义好
     76     // directive有两个参数
     77     //参数一: 自定义指令 v-focus
     78     //参数二: 对象,对象中可以添加很多方法
     79     // 添加一个inserted方法:而这个方法中又有两个参数:
     80     //参数一:el 当前使用自定义指令的对象
     81     //参数二:obj 是指它(v-color="color" )后面设置的表达式
     82     //{expression:"color",value:"red",}
     83     Vue.directive("focus", {
     84         inserted: function (el, obj) {
     85             // console.log(el);
     86             el.focus();
     87         }
     88     });
     89     Vue.directive("color", {
     90         inserted: function (el, obj) {
     91             // obj.style.color = "red";
     92             obj.style.color = obj.value;//????????????
     93             console.log(obj.value);
     94         }
     95     });
     96 
     97     var vm = new Vue({
     98         el: "#app",
     99         data: {
    100             color: "green",
    101             id: 0,
    102             name: '',
    103             list: [
    104                 { "id": 1, "name": "itcast", "ctime": Date() },
    105                 { "id": 2, "name": "黑马", "ctime": Date() }
    106             ]
    107         },
    108         // mounted(){
    109         //     this.getFocus()
    110         // },
    111         methods: {
    112             add: function () {
    113                 //将id和namepush到list数组中
    114                 this.list.push({ "id": this.id, "name": this.name, "ctime": Date() });
    115             },
    116             del: function (id) {
    117 
    118                 // 根据id得到下标
    119                 // 默认去遍历list集合,将集合中的每个元素传入到function的item里,
    120                 var index = this.list.findIndex(function (item) {
    121                     //根据item中的id属性来判断这个item是否是上面id中
    122                     //对应的数据,如果是返回一个true ,否返回false,继续下面的一条数据的遍历,以此类推
    123                     return item.id == id; //如果返回true,那么findIndex方法会将这个item对应的id返回到外面接受
    124                 });
    125                 // 根据下标在list集合中将对应的数据删除 
    126                 // splice(开始删除的下标,删除的长度)               
    127                 this.list.splice(index, 1);
    128             }
    129 
    130         },
    131         filters: {
    132             // 私有过滤器:过滤器中方法的第一个参数第一个参数是:当前调用过滤器的对象数据
    133             dateFrm: function (time,spliceStr) {
    134                 // return "2017-11-16";
    135                 var date = new Date(time);
    136                 //得到年
    137                 var year = date.getFullYear();
    138                 // 得到月
    139                 var month = date.getMonth() + 1;
    140                 // 得到日
    141                 var day = date.getDate();
    142                 return year+spliceStr+month+spliceStr+day;
    143             },
    144             addNoon:function(time) {
    145                 return time+"下午";
    146             }
    147         }
    148     });
    149 
    150 </script>

    二.全局/公有过滤器

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 
      4 <head>
      5     <meta charset="UTF-8">
      6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
      7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
      8     <title>Document</title>
      9     <style>
     10         #app {
     11              600px;
     12             margin: 10px auto;
     13         }
     14 
     15         .tb {
     16             border-collapse: collapse;
     17              100%;
     18         }
     19 
     20         .tb th {
     21             background-color: #0094ff;
     22             color: white;
     23         }
     24 
     25         .tb td,
     26         .tb th {
     27             padding: 5px;
     28             border: 1px solid black;
     29             text-align: center;
     30         }
     31 
     32         .add {
     33             padding: 5px;
     34             border: 1px solid black;
     35             margin-bottom: 10px;
     36         }
     37     </style>
     38 </head>
     39 
     40 <body>
     41     <div id="app">
     42         <div class="add">
     43             编号: <input id="id" v-color="color" v-focus="focus" type="text" v-model="id">品牌名称: <input v-model="name" type="text">
     44             <button @click="add">添加</button>
     45         </div>
     46         <div class="add">品牌名称:<input type="text"></div>
     47         <div>
     48             <table class="tb">
     49                 <tr>
     50                     <th>编号</th>
     51                     <th>品牌名称</th>
     52                     <th>创立时间</th>
     53                     <th>操作</th>
     54                 </tr>
     55                 <tr v-if="list.length <= 0">
     56                     <td colspan="4">没有品牌数据</td>
     57                 </tr>
     58                 <!--加入: key="index" 时候必须把所有参数写完整  -->
     59                 <tr v-for="(item,key,index) in list" :key="index">
     60                     <td>{{item.id}}</td>
     61                     <td>{{item.name}}</td>
     62                     <td>{{item.ctime | dateFrm("/") |addNoon}}</td>
     63                     <!-- 使用vue来注册事件时,我们在dom元素中是看不到的 -->
     64                     <td><a href="javascript:void(0)" @click="del(item.id)">删除</a></td>
     65                 </tr>
     66             </table>
     67         </div>
     68 
     69     </div>
     70 </body>
     71 
     72 </html>
     73 <script src="vue2.4.4.js"></script>
     74 <script>
     75     // 使用全局过滤器(公有过滤器)
     76     Vue.filter("dateFrm", function (time,spliceStr) {
     77         // return "2017-11-16";
     78         var date = new Date(time);
     79         //得到年
     80         var year = date.getFullYear();
     81         // 得到月
     82         var month = date.getMonth() + 1;
     83         // 得到日
     84         var day = date.getDate();
     85         return year + spliceStr + month + spliceStr + day;
     86     });
     87 
     88 
     89     // 先将自定义指令定义好
     90     // directive有两个参数
     91     //参数一: 自定义指令 v-focus
     92     //参数二: 对象,对象中可以添加很多方法
     93     // 添加一个inserted方法:而这个方法中又有两个参数:
     94     //参数一:el 当前使用自定义指令的对象
     95     //参数二:obj 是指它(v-color="color" )后面设置的表达式
     96     //{expression:"color",value:"red",}
     97     Vue.directive("focus", {
     98         inserted: function (el, obj) {
     99             // console.log(el);
    100             el.focus();
    101         }
    102     });
    103     Vue.directive("color", {
    104         inserted: function (el, obj) {
    105             // obj.style.color = "red";
    106             obj.style.color = obj.value;//????????????
    107             console.log(obj.value);
    108         }
    109     });
    110 
    111     var vm = new Vue({
    112         el: "#app",
    113         data: {
    114             color: "green",
    115             id: 0,
    116             name: '',
    117             list: [
    118                 { "id": 1, "name": "itcast", "ctime": Date() },
    119                 { "id": 2, "name": "黑马", "ctime": Date() }
    120             ]
    121         },
    122         // mounted(){
    123         //     this.getFocus()
    124         // },
    125         methods: {
    126             add: function () {
    127                 //将id和namepush到list数组中
    128                 this.list.push({ "id": this.id, "name": this.name, "ctime": Date() });
    129             },
    130             del: function (id) {
    131 
    132                 // 根据id得到下标
    133                 // 默认去遍历list集合,将集合中的每个元素传入到function的item里,
    134                 var index = this.list.findIndex(function (item) {
    135                     //根据item中的id属性来判断这个item是否是上面id中
    136                     //对应的数据,如果是返回一个true ,否返回false,继续下面的一条数据的遍历,以此类推
    137                     return item.id == id; //如果返回true,那么findIndex方法会将这个item对应的id返回到外面接受
    138                 });
    139                 // 根据下标在list集合中将对应的数据删除 
    140                 // splice(开始删除的下标,删除的长度)               
    141                 this.list.splice(index, 1);
    142             }
    143 
    144         }
    145     });
    146 
    147 </script>
  • 相关阅读:
    Linux下shell
    分享微博@功能jquery代码及全面解析
    使用C#处理WebBrowser控件中的跨域问题
    Sqler 工具
    ASP.NET Web API批处理器
    Microsoft Academic Search
    C#中delegate对象Equals方法简析
    写一个编译器
    使用.NET中的Action及Func泛型委托
    电子政务数据库管理系统及应用软件系统安全分享(一)
  • 原文地址:https://www.cnblogs.com/TigerZhang-home/p/8962231.html
Copyright © 2011-2022 走看看