2017-07-06 82 views
0

我試圖根據用戶的權限創建一個指令來控制DOM中的一些元素。在網上尋找,我發現了元素的.remove()函數。它工作很好。AngularJS - 自我刪除/插入

但是,如果權限發生變化,我需要再次顯示DOM元素。撥打.remove()後我怎麼辦?

這裏是我的代碼:

ddo.link = function(scope, el, attrs){ 

// Validate the permission 
if(currentUserService.isAllowed(scope.validatePermission) !== true) { 
    el.remove(); 
} 

// Listener for changes 
$rootScope.$on("eventName", function(event, param){ 

    // Validate the permission 
    if(currentUserService.isAllowed(scope.validatePermission) !== true) { 
     el.remove(); 
    } else { 
     // SHOW THE ELEMENT AGAIN! 
    } 

}); 

}; 

或者是有另一種方式去刪除HTML並再次插入?因爲使用CSS,用戶可以通過開發者控制檯禁用...

在此先感謝!

+0

爲什麼不用NG,如果已經這樣做了?如果這是一個交易破壞者,我會看ng-if的代碼,看看它是如何實現的。 –

+0

當前用戶經常更改的用例是什麼?似乎只是在用戶更改時重新加載currentState就足夠了。我會非常猶豫地將一個監聽器添加到rootScope中。 –

+0

Mike Feltman感謝我們的關注!我需要這種更新的可能性,因爲權限是在Link phasse之後加載的,所以我需要更新指令的展覽。 – LeonardoGuimaraes

回答

0

改爲使用.remove()嘗試使用.addClass().removeClass()添加display:none的類並在必要時刪除此類。 方法.remove()刪除顯示元素,所以你不能再顯示這一點。

另一種方法是使用.css()但你的處理速度較慢比別人

+0

但是,關於邁克註釋上面,使用ng-if是一個更好的選擇 –

+0

感謝您的關注巴勃羅!但與ng - 如果我將需要插入我的代碼在所有控制器...我是否正確? – LeonardoGuimaraes

+0

是否有另一種方法可以刪除de HTML並再次插入?因爲使用CSS,用戶可以通過開發者控制檯禁用... – LeonardoGuimaraes