2015-10-13 113 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