2013-01-22 5 views
3

J'essaie de créer un composant ou une vue réutilisable pour créer mes étiquettes et entrées de texte enveloppées dans un groupe de contrôle Bootstrap. La composante aurait besoin de créer quelque chose comme ceci:Composants/vues réutilisables pour EmberJS

<div class="control-group"> 
    <label class="control-label" for="approachInputId">ApproachLabel</label> 
    <div class="controls"> 
    {{view Ember.TextField valueBinding='approach'}} 
    </div> 
</div> 

que je peux appeler en utilisant le code le long des lignes de:

{{view App.TextFieldWithLabel valueBinding='approach' label='ApproachLabel'}} 

Il y a une question similaire sur Stack Overflow: Using Ember.js text field ids for a <label> tag

Où l'une des réponses inclut un lien vers ce jsFiddle. C'est presque ce que je cherche, mais je voudrais comprendre comment passer le label et valueBinding à travers quand j'insère la vue {{view App.TextFieldWithLabel}} au lieu de les déclarer dans un tableau d'objets JS.

Toute aide serait appréciée.

EDIT: 29 janvier 2013

J'ai créé un autre jsFiddle à http://jsfiddle.net/ianpetzer/3WWaK/ qui montre clairement ce que je suis en train de réaliser. Je n'arrive pas à obtenir la valeur de variable à passer à partir du point où j'insère la vue dans le modèle.

Répondre

1

J'ai composé un petit violon pour vous ici http://jsfiddle.net/Energiz0r/sbnwb/3/ où j'ai suivi votre API ci-dessus:

{{view App.TextFieldWithLabel valueBinding='approach' label='ApproachLabel'}} 

Hope this est ce que vous cherché.

+0

Merci Tommy. C'est génial. Ce dont j'avais vraiment besoin, c'était la possibilité de passer des valeurs d'affichage et de liaison à partir des modèles de guidons au lieu de les déclarer dans le code. Ce qui est montré ici: http://jsfiddle.net/VenkataSuresh/3WWaK/2/ .. Tout cela devrait aider ceux qui apprennent EmberJS si .. – ianpetzer

+0

Ensuite, j'ai mal compris votre question, si vous étiez à la recherche de ceci: {{view App .TextFieldWithLabel valueBinding = "item.firstName" label = "Donnez-moi votre nom!"}} – TommyKey

+0

Vous avez raison. C'est exactement ce que je cherchais. J'ai changé le vôtre à la réponse acceptée. Merci! – ianpetzer

0

Si vous cherchez à créer des champs bootstrap avec Ember, la meilleure façon d'aller à ce sujet que je l'ai trouvé à ce jour est Ember Bootstrap

Bien qu'il soit pas vraiment bien documenté, je l'ai trouvé assez simple à utiliser et vous Vous économiserez beaucoup de temps car c'est plutôt bien implémenté. Je trouve le code assez concis et vous en apprendrez beaucoup sur Ember si vous prenez le temps de voir comment cela fonctionne.

Pour répondre à votre question plus précisément, si vous insérez une vue Ember comme vous l'avez montré ci-dessus, l'objet de vue sera en mesure d'accéder à this.get('value') et this.get('label'). Peu importe, l'un est littéral et l'autre est contraignant. Une partie de l'élégance d'Ember est qu'il traite de cela pour vous.

+0

Salut David, Merci pour votre réponse. J'ai créé un autre JsFiddle à http://jsfiddle.net/ianpetzer/3WWaK/.J'ai eu de la chance au début d'afficher le nom mais avec la version plus récente d'Ember 1.0.0-pre4, je n'arrive pas à passer le nom lorsque j'insère la vue dans le template. Y a-t-il une chance que tu puisses voir et voir ce que je fais? – ianpetzer

+0

ianp, vérifiez ici http://jsfiddle.net/cSjpf/ (vous devez référencer le nom de la vue, le contexte par défaut est le contrôleur) –

+0

Merci Pierpaolo :) – ianpetzer

1

expressions de modèles et de leur comportement

  • {{view.name}} saisiront les valeurs de la vue
  • {{controller.name}} va choisir les valeurs de contrôleur
  • {{name}} va choisir les valeurs du contexte de vue

Alors, s'il vous plaît aller avec la première option pour lier les propriétés de vue

violon Mise à jour - http://jsfiddle.net/VenkataSuresh/3WWaK/2/