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
我在想我可以从我的控制器访问这些属性中的任何一个,如果是这样的话?原谅我,如果这是显而易见的,但我完全新的指令...
答
请记住“JS”在AngularJS
。
如果您可以通过其id
或class
属性找到你的元素,那么你就应该与普通的JavaScript可以查询它,利用querySelector
和getAttribute
:
document.querySelector("#element-id").getAttribute('data-overflowed');
这不是一个完美的解决方案,因为在某些测试框架,你不能保证有接口document
(这就是为什么Angular有$document
包装),但它可以让你得到你需要的东西(没有jQuery!)。如果jqLite
(由angular.element
使用)通过ID或类名启用了find
,而不仅仅是通过标签名称,则会更简单。
你可以试试'angular.element(element).attr('data-overflowed')'? – floribon
我假设你是指内部元素是div的id?即。 angular.element('div-name')。attr('data-overflowed')?我试过,得到了错误:'通过选择器查找元素不被jqLite支持' –