Импортировать строку из файла js в приложении nativescript-vue

У меня есть в папке db файл db.js, в котором я хочу хранить длинный текст для включения в мое приложение:

const db = {
    sodiumlaurylsulfate: "Essentiellement exploité comme tensioactif (qui permet aux corps gras de la formule de se disperser dans l’eau), le sodium lauryl sulfate est un irritant bien connu, les scientifiques le savent depuis des décennies. Il n’est qu’à compulser leurs publications pour s’en convaincre : ici on le désigne comme « l’irritant standard », là, on introduit le propos par « le sodium lauryl sulfate (SLS), un tensioactif fréquemment utilisé pour induire expérimentalement des dermatites de contact »… Cet ingrédient est malgré tout présent dans un très grand nombre de références. Mais ce sont le plus souvent des produits rincés, les doses ne sont pas forcément très élevées et certains consommateurs le supportent bien. Chez d’autres, en revanche, les produits lavants laissent la peau inconfortable (attention en particulier avec les produits pour enfants et ceux destinés aux zones intimes) et les dentifrices provoquent des aphtes. A noter que le sodium laureth sulfate est nettement moins irritant."
}

module.exports = {db};

и в моем шаблоне я называю это так:

 <template>
    <StackLayout>
        <TextView :text="db.sodiumlaurylsulfate"></TextView>
    </StackLayout>
</template>

<script>
import { db } from "../db/db.js";
export default {
    mounted() {
       console.log(db.sodiumlaurylsulfate) // this works !
    }
}
</script>

когда я регистрирую свой текст на смонтированном, он работает, но он делает ошибку в компоненте TextView.

System.err: com.tns.NativeScriptException:
System.err: Calling js method getView failed
System.err: TypeError: Cannot read property 'sodiumlaurylsulfate' of 
undefined
System.err: File: "<unknown>, line: 3, column: 1489
System.err: StackTrace:

кажется, я делаю что-то здесь не так.

1 ответ

Решение

Свойства в шаблонах сравниваются с состоянием компонента, а не с его лексической областью. приписывать db быть собственностью государства (в data() раздел), и это должно работать:

import { db } from "../db/db.js";
export default {
    data() {
      return { db }
    },
    mounted() {
       console.log(this.db.sodiumlaurylsulfate); // should work too
    }
}
Другие вопросы по тегам