过滤器filters

局部过滤器和全局过滤器
 
过滤方法中有一个参数,这个参数就是传进来要过滤的元素
注意:使用过滤器会出现死循环,因为在将原数组排序后赋值给原数组,引用空间没有变化,过滤一直执行
解决方法:
使用扩展符将数组赋值给新的变量,引用空间发生变化后,不会再循环
filters:{ 
  sortArray(value){ 
    // value是要过滤的元素 
    let [...array] = [...value]; //引用空间发生变化,将原数组赋值给新数组 
    array.sort((a,b)=>b-a); 
    return array; // 必须有返回值 
  } 
}
过滤器中必须有返回值
一般使用花括号{{}}插值,管道符前是要过滤的元素,管道符之后是过滤方法
例如:
<el-table-column prop="isopenallhours" label="是否24小时营业"> 
  <template slot-scope="scope">
     {{scope.row.isopenallhours | isopenallhoursFilter}}
  </template> 
</el-table-column>

 

局部过滤器(只能在当前组件使用)
 
 
全局过滤器
1、在src目录下新建一个filters文件夹,在filters目录下创建一个index.js文件
// 是否24小时营业 export function isopenallhoursFilter(string) { let str = '' switch (string) { case '1': str = '是' break case '2': str = '否' break } return str }
2、在入口文件main.js中引入filters ,全局注册
import * as filters from './filters' // 过滤器统一处理加载 Object.keys(filters).forEach(key => { Vue.filter(key, filters[key]) })
3、在组件中使用直接用管道符| 加上过滤函数名
 
import ... as 导入一个模块,相当于导入一个目录,是相对路径
import A as B 代表工具库A有一个别称是B
from ... import 导入一个模块中的一个函数,相当于导入一个目录中的文件,是绝对路径
from A import b 相当于A.b
或者是import b from A
 
posted @ 2021-04-14 16:20  梁文璇say  阅读(152)  评论(0)    收藏  举报