如何在Vue.js中添加一组全局过滤器?
我想在Vue.js应用程序中使用一些全局过滤器。我知道我需要在主Vue实例之前定义它们,但从代码组织的角度来看,将它们全部放在“main.js”文件中似乎并不合适。我怎么能把这些定义放在一个单独的文件中,导入到“main.js”中呢?我无法完全理解导入/导出的内容。创建一个filters.js文件如何在Vue.js中添加一组全局过滤器?,vue.js,vuejs2,Vue.js,Vuejs2,我想在Vue.js应用程序中使用一些全局过滤器。我知道我需要在主Vue实例之前定义它们,但从代码组织的角度来看,将它们全部放在“main.js”文件中似乎并不合适。我怎么能把这些定义放在一个单独的文件中,导入到“main.js”中呢?我无法完全理解导入/导出的内容。创建一个filters.js文件 import Vue from "vue" Vue.filter("first4Chars", str => str.substring(0, 4))
import Vue from "vue"
Vue.filter("first4Chars", str => str.substring(0, 4))
Vue.filter("last4Chars", str => str.substring(str.length - 4))
将其导入main.js
import Vue from 'vue'
import App from './App'
import "./filters"
new Vue({
el: '#app',
template: '<App/>',
components: { App },
})
我认为最好的方法是使用VueJS的
插件
功能
过滤器
文件夹,并将所有过滤器放在那里
- filters
| - filter1.js
| - index.js
export default function uppercase (input) {
return input.toUpperCase();
}
index.js中
导入并创建插件:
import uppercase from './filter1';
export default {
install(Vue) {
Vue.filter('uppercase', uppercase);
}
}
import filters from './filters';
import Vue from 'vue';
Vue.use(filters);
您可以在任何模板中使用过滤器。就这么简单!谢谢。当我命名文件
filter.js
时,我不得不使用import./filter
很好的答案,为了更好地阅读,我制作了一个名为filter
的文件夹,并将过滤器写入一个文件filter/index.js
中,而你无法导入/filters
。这感觉比调用Vue.filter(…)更简洁
在每个过滤器定义文件中,我很难将其与我的应用程序一起使用,并且意识到Vue在HTML模板中计算条件表达式的方式与Angular不同。正确的语法应该是{value?$options.filters.uppercase(value,'params:'-'}}
VueJS官方文档警告不要过度使用全局混合,因为它们被注入到创建的每个Vue实例中。
import filters from './filters';
import Vue from 'vue';
Vue.use(filters);
import Vue from 'vue';
import numeral from 'numeral';
const NumberFilter = number => numeral(value).format('0,0');
Vue.filter('number', numberFilter);
export default numberFilter;
import NumberFilter from './NumberFilter';
describe('NumberFitler', () => {
it('exists', () => {
expect(NumberFilter).toBeDefined();
});
it('does its thing', () => {
expect(NumberFilter(1234)).toEquals('1,234');
});
});
export default{
firstWordCapitalize (value) => {
if (!value)
return ''
value = value.toString()
return value.charAt(0).toUpperCase();
},
anotherFilter(value) =>{
return value+"-test";
}
}
import Vue from 'vue';
import Filters from './filters';
Vue.mixin({
filters: Filters
});