Estoy usando la función de inyección de Nuxt JS para inject una función en mi página para la reutilización del código. Me gustaría usar la función en otro archivo de complemento y parece que no puedo obtener la función allí.
Aquí está mi configuración:
function setCookiePrefix () { return 'fudge__' } function getCookie (app, name) { try { const prefix = setCookiePrefix() const cookie = app.$cookies.get(`${prefix}${name}`) if (!cookie || cookie == '') { throw 'cookie not set' } return cookie } catch (err) { } return null } export default function ({ app, store, context }, inject) { /* * Get just the affiliate (cpm_id OR affiliate) * examples: "my_brand", "blah" */ inject('getAffiliate', () => { const affiliate = getCookie(app, 'affiliate') const brand = getBrand(store) if (!affiliate) return brand return affiliate }) } Y el archivo en el que estoy tratando de utilizar la función getAffiliate desde mi archivo tracking.js:
export default async function ({ app, route, store }) { const affiliate = app.$getAffiliate() console.log(affiliate) <-- undefined }He intentado:
app.$getAffiliate()this.$getAffiliate() <-- esto funciona en un archivo Vue$getAffiliate()this.getAffiliate() ¿Qué me falta para acceder a mi función getAffiliate en otro archivo de complemento?
Tengo un complemento api con algunos axios configurados. Puedo cargarlo dentro de otro archivo de complemento como este:
export default ( {$api} , inject) => { const service = new SomeService($api) inject('someService', SomeService) }Así que en tu caso sería:
export default async function ({ app, route, store, $getAffiliate }) { const affiliate = $getAffiliate() console.log(affiliate) }No estoy seguro si esta es la manera correcta, pero funciona para mí.