2010-05-28 7 views
6

Existe-t-il un moyen d'injecter dynamiquement des modèles partiels (et de le faire fonctionner de la même manière dans Ruby & Javascript)? Fondamentalement, j'essaye de rendre différents types d'objets dans une liste.Rendre dynamiquement des modèles partiels en utilisant moustache

Le meilleur que je peux trouver est la suivante:

<div class="items"> 
{{#items}} 
<div class="item"> 
    {{#is_message}} 
    {{> message}} 
    {{/is_message}} 

    {{#is_picture}} 
    {{> picture}} 
    {{/is_picture}} 
</div> 
{{/items}} 
</div> 

Je ne suis pas super excité à propos de cette approche. Y a-t-il un meilleur moyen?

Notez également que les différents types de modèles pour les vues peuvent avoir des champs non similaires. Je suppose que je pourrais toujours aller au plus petit dénominateur commun et que le hash de données contienne le html, cependant j'utiliserais plutôt les modèles de moustache.

+1

Avez-vous trouvé une solution? jamais Je pense à appeler 'Moustache.render' dans l'une des méthodes logiques et retourner le résultat. – Jeremy

+0

Oui, c'est ce que j'ai commencé à faire. Rendre un modèle et l'injecter dans la variable. –

Répondre

1

J'ai fait la même chose que vous avez fait, et pour chaque type de propriété i nécessaire une variable partielle dynamique, je trouve à une dynamique dans le modèle de données js qui est en cours de rendu dans le modèle ...

eval("this.set({is_" + this.get("propertyType") + ": true})") 

ou

this["is_" + propertyType] = true 

au moins je n'ai pas définir manuellement la variable « is_whatever » ...

Ce serait cool si mustache.js ou ICanHaz.js avaient une syntaxe intelligente pour dy propriétés namique à l'intérieur des balises de moustache ... peut-être quelque chose comme ceci:

{{>{{message}} }} 
Questions connexes