AngularJS:如何访问外部指令中定义的属性

问题描述:

我正在使用指令将省略号放在称为角度省略号的文本溢出上。如果文本有足够的空间,角度省略不适用于......的。我需要知道省略号是否适用于某些文本。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支持' –

请记住“JS”在AngularJS
如果您可以通过其idclass属性找到你的元素,那么你就应该与普通的JavaScript可以查询它,利用querySelectorgetAttribute

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

这不是一个完美的解决方案,因为在某些测试框架,你不能保证有接口document(这就是为什么Angular有$document包装),但它可以让你得到你需要的东西(没有jQuery!)。如果jqLite(由angular.element使用)通过ID或类名启用了find,而不仅仅是通过标签名称,则会更简单。