AngularJS:如何从外部访问指令内部定义的属性
我使用一个指令在文本溢出上放置省略号,称为角度省略号。如果文本有足够的空间,角省略不适用于。我需要知道省略号是否适用于某些文本 查看该指令的代码,我可以看到它的属性似乎与我要查找的匹配-attribute.isTruncated:AngularJS:如何从外部访问指令内部定义的属性,angularjs,Angularjs,我使用一个指令在文本溢出上放置省略号,称为角度省略号。如果文本有足够的空间,角省略不适用于。我需要知道省略号是否适用于某些文本 查看该指令的代码,我可以看到它的属性似乎与我要查找的匹配-attribute.isTruncated: compile: function(elem, attr, linker) { return function(scope, element, attributes) { /* State Variables */ attri
compile: function(elem, attr, linker) {
return function(scope, element, attributes) {
/* State Variables */
attributes.isTruncated = false;
通过设置元素的“data Overflow”属性,它似乎也做了类似的事情,如下所示:
element.attr('data-overflowed', 'false');
这是一个指向指令代码的链接,它不太复杂,也不太长:
我想知道我可以从我的控制器访问这些属性中的任何一个,如果可以,如何访问?如果这是显而易见的,请原谅,但我对指令完全陌生…还记得AngularJS
中的“JS”吗如果您可以通过元素的
id
或class
属性找到元素,那么您应该能够使用普通javascript查询它,方法是使用和:
这不是一个完美的解决方案,因为在一些测试框架中,不能保证您有
文档
接口(这就是为什么Angular有$document
包装器),但它可以满足您的需要(没有jQuery!)。如果jqLite
(由使用)启用了find
,而不仅仅是通过ID或类名,那么它会更简单。您可以尝试angular.element(element.attr('data-overflow')
?我假设您的意思是内部元素是div的ID?例如:angular.element('div-name').attr('data-overflow')?我试过了,但出现了错误:“jqLite不支持通过选择器查找元素”
document.querySelector("#element-id").getAttribute('data-overflowed');