2016-04-26 3 views
2

私は、角楕円記号と呼ばれるテキストオーバーフローに省略記号を付ける命令を使用しています。テキストのための十分なスペースがあれば、角括弧は適用されません。省略記号がテキストに適用されているかどうかを知る必要があります。AngularJS:外側から指示文内で定義された属性にアクセスする方法

私はそれが私が探しています何を一致させるように思われる属性を持っていることがわかりますディレクティブのコードに探し - attribute.isTruncated:また設定することにより、類似した何かをするようだ

compile: function(elem, attr, linker) { 

    return function(scope, element, attributes) { 
     /* State Variables */ 
     attributes.isTruncated = false; 

これのような要素の「データ・オーバーフローし」属性:

element.attr('data-overflowed', 'false'); 

ここでは、それはあまりにも複雑または長いディレクティブのコードへのリンクはありませんされています

https://github.com/dibari/angular-ellipsis/blob/master/src/angular-ellipsis.js

私のコントローラからこれらの属性にアクセスすることはできますか?これが明白であれば私を許してください。しかし、私は指示を全く新しくしました...

+0

'angular.element(element).attr(' data-overflowed ') 'を試すことができますか? – floribon

+0

内部要素がdivのIDであると仮定しますか?すなわち、 angle.element( 'div-name')。attr( 'data-overflowed')?私はそれを試み、エラーを受け取りました: 'セレクタを介して要素を調べることはjqLit​​eによってサポートされていません' –

答えて

1

AngularJSの "JS"を覚えておいてください。
あなたは、あなたがそれをquerySelectorgetAttributeを使用することによって、無地のJavaScriptでできるクエリする必要があり、そのidまたはclass属性によって、あなたの要素を見つけることができる場合は、次の

document.querySelector("#element-id").getAttribute('data-overflowed'); 

それが原因で、いくつかのテストフレームワークに最適なソリューションではありません、 documentインターフェイスを持つことは保証されていません(そのためAngularには$documentラッパーが含まれています)が、必要なものを得ることができます(jQueryなし)。 jqLiteangular.elementによって使用される)が、タグ名だけでなく、IDまたはクラス名によってfindを有効にしていれば、より簡単になりました。

関連する問題