Как я могу получить доступ к одному прикрепленному фильтру от другого в Vue - PullRequest
0 голосов
/ 19 февраля 2019

Я настроил файл для хранения фильтров, прикрепленных к моему объекту Vue, это required в моем App.js.Однако у меня есть фильтр, который в идеале будет использовать другой фильтр:

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, есть ли способ обойти это?Конечно, я могу повторить код форматирования даты, но я бы предпочел не делать этого.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

один из вариантов - разделить определение и глобальную регистрацию

(плюс его теперь можно использовать / импортировать в несвободном контексте)

// 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)
0 голосов
/ 19 февраля 2019

Обычно я создаю глобальную ссылку на ваш основной объект 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() внутри функций фильтра.

Возможно, это не идеальный вариант, но он несколько раз помог мне, когда вам нужно определить плагины / службы / компоненты, которые не дают вам текущий экземпляр Vue, который он использует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...