Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 动态调用Vue筛选器会使组件崩溃_Vue.js_Vue Component - Fatal编程技术网

Vue.js 动态调用Vue筛选器会使组件崩溃

Vue.js 动态调用Vue筛选器会使组件崩溃,vue.js,vue-component,Vue.js,Vue Component,我正在开发一个Vue单文件组件,它显示一个基于JSON对象的表。我想动态运行一个过滤器,以允许每个列都有自己的过滤器 在({ 表格行:[{ 标题:“ID”, 属性:“id” },{ 标题:“用户”, 属性:“名称” },{ 标题:“电子邮件”, 属性:“电子邮件” },{ 标题:“创建于”, 属性:'在'', filter:'formatDate'//包含筛选器的唯一列 }], 名单:[{ id:1, 名称:“管理员用户”, 电子邮件:“admin@sample.com", 描述:“示例管理员”

我正在开发一个Vue单文件组件,它显示一个基于JSON对象的表。我想动态运行一个过滤器,以允许每个列都有自己的过滤器

循环中,我想检查
行.filter
变量,并在未定义时相应地调用或不调用该过滤器。但是,我当前的代码将使组件崩溃


{{row.header}}
{{model[row.property]| row.filter}
导出默认值{
数据:()=>({
表格行:[{
标题:“ID”,
属性:“id”
},{
标题:“用户”,
属性:“名称”
},{
标题:“电子邮件”,
属性:“电子邮件”
},{
标题:“创建于”,
属性:'在'',
filter:'formatDate'//包含筛选器的唯一列
}],
名单:[{
id:1,
名称:“管理员用户”,
电子邮件:“admin@sample.com",
描述:“示例管理员”,
创建时间:“2020-07-05 13:12:35”
}]
}),
过滤器:{
格式日期(日期){
日期=新日期(日期);
返回日期。toLocaleString()
}
}
}

您可以使用
v-if
v-else

{{model[row.property]| formatDate()}
{{model[row.property]}

由于您希望避免使用
v-if
和过滤器,因此您可以这样做:

  • 创建格式化数据的方法:
  • 方法:{
    //格式处理程序
    格式(值、过滤器){
    如果(filter==“formattate”)返回此.formattate(值);
    if(filter==“otherFormat”)返回此.otherFormat(值);
    返回值;
    //或者动态调用函数名
    如果(过滤器)返回此[过滤器](值);
    返回值;
    },
    //所有筛选器都将移动到方法
    格式日期(日期){
    返回新日期(Date).toLocaleString();
    }
    其他格式(值){
    返回someOtherFormat(值);
    }
    }
    
  • 从模板中调用该方法
  • 
    {{格式(模型[row.property],row.filter)}
    
    使用vuetify v-data-table怎么样?这是我想要避免的,因为如果有更多的过滤器,添加各种if/else条件将非常繁琐。非常适合,谢谢,了解V3中不推荐使用的过滤器也很好