2016-04-26 61 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?即。 angular.element('div-name')。attr('data-overflowed')?我試過,得到了錯誤:'通過選擇器查找元素不被jqLit​​e支持' –

回答

1

請記住「JS」在AngularJS
如果您可以通過其idclass屬性找到你的元素,那麼你就應該與普通的JavaScript可以查詢它,利用querySelectorgetAttribute

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

這不是一個完美的解決方案,因爲在某些測試框架,你不能保證有接口document(這就是爲什麼Angular有$document包裝),但它可以讓你得到你需要的東西(沒有jQuery!)。如果jqLite(由angular.element使用)通過ID或類名啓用了find,而不僅僅是通過標籤名稱,則會更簡單。

相關問題