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

时间:2016-04-26 14:49:02

标签: angularjs

我正在使用一个指令将省略号放在文本溢出上,称为angular-ellipsis。如果文本有足够的空间,则角度省略号不适用于...#。我需要知道省略号是否应用于某些文本。

查看该指令的代码,我可以看到它的属性似乎与我要查找的属性相匹配 - 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

我想知道我可以从我的Controller访问这些属性中的任何一个,如果是这样的话,怎么样?如果这很明显,请原谅我,但我对指令完全不了解......

1 个答案:

答案 0 :(得分:1)

记住AngularJS中的“JS” 如果您可以通过idclass属性找到您的元素,那么您应该可以使用普通的javascript查询它,使用querySelectorgetAttribute

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

这不是一个完美的解决方案,因为在某些测试框架中,您无法保证拥有document接口(这就是Angular拥有$document包装器的原因),但它可以满足您的需求(无需jQuery的!)。如果jqLite(由angular.element使用)通过ID或类名启用find,而不仅仅是标记名称,则会更简单。