Вызов функции $ t в плагине nuxt.js - PullRequest
0 голосов
/ 05 февраля 2019

Я создаю приложение nuxt.js.Поэтому я планирую внедрить вспомогательный объект и функции, которые повторно используются в контексте.

Итак, я создал плагин

export default (context) => {
     const { $t } = context.app;

     const validators = {
      firstNameRules: [
         v => !!v || $t('formValidation.NO_FIRST_NAME'),
         v => v.length < 128 || $t('formValidation.INVALID_FIRST_NAME_TOO_LONG')
       ]
     };

     context.$formValidators = validators;
}

Объект введен в контекст правильно, и я могу получить доступ к правилам, где я хочу.Однако попытка запустить функцию $ t приводит меня к ошибке

Cannot read property '_t' of undefined 

Так что в основном я хотел бы запустить функцию $ t и получать локализованное сообщение, когда что-то происходит.Возможно ли это, и если да, то как?

errror compiling message

Ответы [ 2 ]

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

Попробуйте использовать inject:

export default (context, inject) => {
  const { $t } = context.app;
  const validators = {
    firstNameRules: [
      v => !!v || $t('formValidation.NO_FIRST_NAME'),
      v => v.length < 128 || $t('formValidation.INVALID_FIRST_NAME_TOO_LONG')
    ]
  };

  context.$formValidators = validators;
  inject('formValidators', validators);
};
0 голосов
/ 05 февраля 2019

Так что мне удалось решить это в конце концов.

Так что все в порядке this ведет себя в JS ?

Я изменил код так:

export default function(context) {
  function getValidators() {
    return {
      firstNameRules: [
        v => !!v || this.$t('formValidation.NO_FIRST_NAME'),
        v => v.length < 128 || this.$t('formValidation.INVALID_FIRST_NAME_TOO_LONG')
      ]
    };
  }

  Vue.prototype.$formValidators = getValidators;
  context.$formValidators = getValidators;
}

А потом из моего компонента /page

data() {
  const { firstNameRules } = this.$formValidators();
}

При таких вещах this сохраняется вплоть до функции $t

...