Bonjour,

J'ai envie de charger des templates pour presentater les <td> d'un tableau avec un peu de personnalisation. Mais ces templates sont charger dynamiquement depuis une api. Mais concerve la syntaxe de vuejs et je veux pouvoir utiliser les filtres disponibles (les miens + ceux par default de vueJs)

Ce que je fais

L'api me retournerait cela :

let data = {
    template: `
        <ul>
            <li v-for="item in items">{{item.name|capitalize}}</li>
        </ul>
    `,
    value: {
        items: [
            {name: 'toto'},
            {name: 'toto 1'},
            {name: 'toto 2'},
            {name: 'toto 3'}
        ]
    }
}

Et je voudrais simplement pouvoir compiler ma template depuis une method. Comme le fait Mustache simplement grace a la fonction render.
Donc je voudrais simplement compiler de cette facon

    ...
    methods : {
        compile (data) {
            return Vue.render(data.template, data.value)
        }
    }

Pour le moment j'utilise Mustache pour palier au probleme mais ce n'est pas une vrai solution accéptable.

Merci beaucoup pour votre aide...

2 réponses


Est-ce que cela peut t'aider ? https://vuejs.org/v2/guide/render-function.html
Ce que tu cherchers à faire diffère d'un component classique ?

rodbox
Auteur

En fait mon composant charge un json avec les données a affichés et les meta données de présentations (taille des colonnes, couleurs et eventuellement la template au format string pour presenter une colonne de facon un peu plus "sexy". Je suis en train de voir pour créer un composant dynamique qui charge plusieur template dans son state et on a plus qu'a lui envoyer l'index de la template a utiliser et les données a presenter. Mais j'ai l'impression de surcharger pour rien si il y a une fonction toute simple pour compiler une template string avec un jeu de donnée...