2015-10-13 110 views
0

我使用Angular Ellipsis指令(这里:https://github.com/dibari/angular-ellipsis)在溢出的文本上放置一些省略号。下面是代码,它为范围变量“fullText”中包含的文本执行此操作。如何动态添加/删除指令AngularJS

<div data-ng-bind="fullText" data-ellipsis></div> 

我也很喜欢,有充分展现文本的能力,未ellipsised(如果这是一个字......)当我点击一个按钮,说。据我所知,这个指令并没有给我一个简单的方法来做到这一点。

什么是最好的AngularJS方式来做到这一点?我对AngularJS来说很新,并且还没有编写任何指令 - 是否有一种非指令性的方式来优雅地执行此操作?

+0

您可以使用removeAttr删除该属性.removeAttr是一个jquery函数,但角度自身包装了jquery lite,因此您可以安全地使用它。https://docs.angularjs.org/api/ng/function/angular。元素 – brk

回答

1

您可以使用ng-ifng-show/ng-hide

<div data-ng-bind="fullText" data-ellipsis ng-if="condition"></div> 
<div data-ng-bind="fullText" ng-if="!condition"></div> 
<button ng-click="toggle()">Toggle</button> 

// In controller : 
$scope.toggle = function() { 
    $scope.condition = !$scope.condition; 
} 

但是,最好的办法是让指令直接处理它。

+0

嗨马库斯 - 这很有道理 - 这是我认为我可以做的..但是这会创建两个div在你想要做它的每个地方的内存,正确吗?这是一个相当大的开销?使用指令会更高效吗? –

+0

有了一个指令,你将只有一个div,所以是更好。 – Magus

+0

您可以编写自己的自定义指令来包装您的'div',并根据您提供给指令的输入来附加或分离数据 - 省略号指令。虽然这是可能的,但我会建议使用ng-if是一个作为创建自定义指令的更简单的方法将要求您“编译”html字符串,这本身会增加时间复杂性。 – Abdul23