5

刪除指令,什麼是動態地添加或編譯和鏈接元素中刪除指令的正確方法?AngularJS - 動態地從元

我有了一堆的投入有一個頁面(名單已經很長了,所以我要拿出一個通用的解決方案)。我想要做的就是禁用所有的輸入,如果特定的標誌設置。我可以通過使用jQuery的element.prop('disabled',true)來做到這一點。

這樣的方法的問題是,如果任何的輸入都連接NG-禁用或啓用NG-指令,然後在其任何表達式修改它們將覆蓋先前設置的「禁用」屬性。但我希望他們不要重寫我的全球旗幟。

我想出瞭解決方案,以增加爲觀察員NG-禁用或啓用NG-的另一種表達一堆,但它似乎不是最好的方法。

我想要做的,是除去大部分附着在單元指令並設置相應屬性自己。但是,如果我重新編譯並重新鏈接元素,然後將其替換爲文檔,那麼我將得到內存泄漏,因爲舊元素將從DOM文檔樹中取消並保留在內存中。我也不能銷燬元素的範圍,因爲這些元素基本上使用整個頁面的主範圍。

+4

你試過[ngIf(http://docs.angularjs.org/api/ng.directive:ngIf) – dohaivu

+0

你的問題是不是所有的我清楚,但是爲什麼你需要的,如果刪除DOM節點你所要做的就是根據一個標誌禁用它們。我也不清楚你的情況下「全球旗幟」的含義。 – dmackerman

+0

我對你想對輸入做什麼感到有點困惑。如果他們有這個你還想要一些能夠超越ng-disable的東西嗎? – SoEzPz

回答

0

你可以嘗試像

<div ng-show="someBoolean" >Some text or nested element</div> 

或代替「someBoolean」你可以將解析爲一個布爾值的函數。由於angulars雙向數據綁定的NG-展會將完成在下次的更新消化週期

要設置布爾,你可以附加一個NG單擊您的輸入,更新模型/布爾值

<button type="button" ng-click="setBoolean()">Some text or nested element </button>