0

我在 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:

看来我在这里做的不好。

4

1 回答 1

1

模板中的属性是根据组件状态评估的,而不是它的词法范围。分配db为状态的属性(在data()部分中),它应该可以工作:

import { db } from "../db/db.js";
export default {
    data() {
      return { db }
    },
    mounted() {
       console.log(this.db.sodiumlaurylsulfate); // should work too
    }
}
于 2018-08-30T09:26:39.700 回答