我已经设置了一个文件以将附加到我的vue对象的过滤器保存,这是我的app.js中的 required
。但是,我有一个过滤器,理想情况下可以使用另一个过滤器:
Vue.filter('formatDateTime', value => {
if (value) return moment(String(value)).format('DD-MMM-YY hh:mm')
});
Vue.filter('getActivity', value =>
(!value.lastvisited)
? 'Not visited yet'
: 'Last logged in ' + Vue.$options.filters.formatDateTime(value.lastvisited)
)
但是它不能引用全局vue对象,有没有办法解决这个问题?我当然可以重复日期格式的代码,但我宁愿不。
一个选项是分开定义和全局注册
(加上它现在可在非票据上下文中可用/可进口)
// ie. in filters.js
export const formatDateTime = value => value
? moment(String(value)).format('DD-MMM-YY hh:mm')
: null
export const getActivity = value => !value.lastvisited
? 'Not visited yet'
: 'Last logged in ' + formatDateTime(value.lastvisited)
// ie. in in a filter-global-registration.js
import { getActivity, formatDateTime } from 'filters.js'
Vue.filter('formatDateTime', formatDateTime);
Vue.filter('getActivity', getActivity)
我通常要做的就是创建对您的主要vue对象的全局引用,例如:
// Create a filter which calls another filter.
Vue.filter('myFilter', () => {
window.Vue.$options.filters.myOtherFilter(...);
});
// Initialize the main Vue object.
window.Vue = new Vue({
});
然后,您应该能够使用过滤器功能中的window.Vue.$options.filters.myOtherFilter()
访问过滤器。
它可能不是理想的选择,但是它在几次中都帮助我定义了插件/服务/组件,这些插件/服务/组件不会为您提供当前使用的实例。