Vue.component('Accordeon', { template : `

{{ this.list.nameFR }}

{{ this.list.nameEN }}

{{ this.list.nameIT }}

{{ i.nameFR }}

`, props : { list : Object }, data () { return { isActive : false } }, computed: { href: function () { return "#" + this.list.id; } }, methods : { donothing () { }, toggleActive () { this.isActive = !this.isActive } } }) const jsonurl = "asset/db.json" let db2 = fetch(jsonurl) let vm = new Vue({ el: '#root', data: { currentLang: 'fr', db : { restaurants : { id : "resto", nameFR : "Restaurant", nameEN : "Restaurant", nameIT : "Ristoranti", sub : { italiens : { id: "restoital", nameFR : "Italien", nameEN : "Italian", nameIT : "Italiano", SanTelmo : { name: "San Telmo" }, Salsamenteria : { name: "Salsamenteria di Parma" } }, vege : { id : "restovege", nameFR : "Végétarien", nameEN : "Vegan", nameIT : "Vegetariano", SanTelmo : { name: "San Telmo" } } } } } }, methods: { hidelang: function(lang) { langClass = "b9h-lang-" + lang; langElms = document.getElementsByClassName(langClass); for (i = 0; i < langElms.length; i++) { langElms[i].style.display = 'none'; } }, hidelangs: function() { this.hidelang('fr'); this.hidelang('en'); this.hidelang('it'); }, showlang: function(lang) { this.hidelangs(); langClass = "b9h-lang-" + lang; langElms = document.getElementsByClassName(langClass); for (i = 0; i < langElms.length; i++) { langElms[i].style.display = 'revert'; } }, setlang: function (lang) { target = document.querySelector("#"+"tab-"+lang); marker = document.querySelector("#lang-marker"); marker.style.left = target.offsetLeft + "px"; marker.style.width = target.offsetWidth + "px"; this.showlang(lang); }, }, mounted: function() { console.log("mounting"); this.setlang('fr'); console.log("mounted"); } })