2013-08-23 7 views
16

{{#linkTo}}ヘルパーでカスタムdata-属性を設定するにはどうすればよいですか?私はこれを使用したい:ヘルパーのカスタムデータ属性を設定する<a>タグ

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

をし、その結果を次のようになります。

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

が、それは次のようになります。

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

私はこれをどのように行うことができますか?あなたがこれを行うことができます

答えて

26

方法は、新しい属性を認識するためにあなたのEmber.LinkViewを拡張することです:

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

そして、あなたはあなたの{{#link-to}}ヘルパーでそれを使用することができます。

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

この意志結果:

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

attributeBindings以降あなたが必要とするかもしれない複数の属性を置くことができる配列です。

attributeBindings: ['data-toggle', 'foo', 'bar'] 

希望します。

+0

本当に感謝してくれました。 –

+0

このコードはどこにありますか?私はember-cliを使用しており、まだこのようなファイルがどこにあるのかをまだ学習していません。また、あなたが作ったカスタムヘルパーを{{#link To}}していますか、{{#link-to}}と書いていましたか? – redOctober13

+0

@ redOctober13ありがとう、私の答えを修正しました。 'link-to'は新しいヘルパーになりました。 ember-cliに関しては、ファイル名でファイルをピックアップするので、ビューは 'views'ディレクトリになければなりません。 – intuitivepixel

9

@intuitivepixel

おかげ

Uはたくさん助け。その情報を使って、私はLinkViewでarroundを再生し、汎用ソリューションを見つけることができました:

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

自動 'data- *'キージェネレータ - 見栄え: – intuitivepixel

+2

この解決法は、多かれ少なかれ、公式文書に追加されています:http://guides.emberjs.com/v1.10.0/templates/binding-element-attributes/ #toc_adding-data-attributes – Jason

+0

奇妙な。なぜデータ属性がデフォルトでブラックリストに載っているのだろうか。 – Ricky

関連する問題