2013-08-23 5 views
16

Wie kann ich benutzerdefinierte data- Attribut auf dem {{#linkTo}} Helfer? Ich möchte diese verwenden:Festlegen benutzerdefinierter Datenattribute für {{#linkTo}} helper <a> tag

{{#linkTo "foo" data-toggle="dropdown"}}foo{{/linkTo}} 

und das Ergebnis sollte wie folgt aussehen:

<a id="ember323" class="ember-view active" data-toggle="dropdown" href="#/foo/123">foo</a> 

aber es sieht aus wie:

<a id="ember323" class="ember-view active" href="#/foo/123">foo</a> 

Wie kann ich das tun?

Antwort

26

Ein Weg, dies zu tun könnte, ist Ihre Ember.LinkView zu erweitern bewusst das neue Attribut zu sein:

Ember.LinkView.reopen({ 
    attributeBindings: ['data-toggle'] 
}); 

Und dann können Sie es in Ihrem {{#link-to}} Helfer verwenden:

{{#link-to 'foo' data-toggle="dropdown"}}Foo{{/link-to}} 

Dieser Wille Ergebnis in:

<a id="ember262" class="ember-view active" href="#/foo" data-toggle="dropdown">Foo</a> 

Und seit attributeBindings i s ein Array Sie können mehrere Attribute dort setzen, die Sie benötigen könnten:

Ich hoffe, es hilft.

+0

Es hat mir wirklich geholfen, danke. –

+0

wo stellst du diesen Code ein? Ich benutze ember-cli und habe noch nicht gelernt, wo eine Datei wie diese hingehört. Ist {{#linkTo}} ein benutzerdefinierter Helfer, den Sie erstellt haben, oder wollten Sie {{# link-to}} schreiben? – redOctober13

+0

@ redOctober13 Danke, ich korrigiere meine Antwort 'link-to' ist jetzt der neue Helfer und ist im Lieferumfang enthalten. Wie bei ember-cli werden Dateien nach Dateiname sortiert, so dass eine Ansicht im Verzeichnis 'views' liegen sollte. – intuitivepixel

9

@intuitivepixel

Dank

U sehr geholfen. Mit dieser Information habe ich mit dem LinkView herumgespielt und konnte eine generische Lösung finden:

Em.LinkView.reopen({ 
    init: function() { 
     this._super(); 
     var self = this; 
     Em.keys(this).forEach(function(key) { 
      if (key.substr(0, 5) === 'data-') { 
       self.get('attributeBindings').pushObject(key); 
      } 
     }); 
    } 
}); 
+1

automatische 'Daten- *' Schlüsselgenerator - sieht gut aus :) – intuitivepixel

+2

Diese Lösung wurde mehr oder weniger zur offiziellen Dokumentation hinzugefügt: http://guides.emberjs.com/v1.10.0/templates/binding-element-attributes/ # toc_adding-data-attributes – Jason

+0

Seltsam. Ich frage mich, warum Datenattribute standardmäßig auf der schwarzen Liste stehen. – Ricky

Verwandte Themen