2014-12-18 54 views
0

我無法弄清楚爲什麼我的指令失敗。爲什麼我無法使用指令刪除元素

app.directive('errSrc', function() { 
    return { 
     link: function(scope, element, attrs) { 
      element.bind('error', function() { 
       element.remove(); 
      }); 
     } 
    } 
}); 

該指令未能刪除它所應用的元素。但是,如果我更換:

element.remove(); 

有:

element.hide(); 

它會隱藏元素。

據我所知,從angular文檔中.remove()和.hide()方法都是JQLite的一部分,它被烘焙成角度,所以它們都應該可以工作。

任何想法?

+0

您是否嘗試過'scope。$ apply();''element.remove();''之後''? – scniro

+0

我有,它似乎沒有改變任何東西-_- – Taj

+0

也許你正試圖刪除元素時,他們被添加,即在'同一時間'。嘗試一些異步的東西? ($ timeout) – Thierry

回答

1

我不確定你試圖綁定的'錯誤'事件是什麼。

但是,當我嘗試綁定到一個點擊事件,它工作得很好。

myApp.directive('rmv', function() { 
    return { 
     link: function(scope, element, attrs) { 
      element.bind('click', function() { 
       element.remove() 
      }); 
     } 
    } 
}); 

<div rmv>Remove me!</div> 
+0

我將這個指令添加到API的圖像數組。其中一些圖像爲404或具有格式不正確的URL,因此無法加載;該指令的目的是刪除這些圖像。當我使用element.hide()而不是element.remove()出於某種原因時,它會正確隱藏它們... – Taj

+0

我剛剛嘗試使用圖像和不正確的URL。它對我來說工作得很好。檢查這個小提琴:http://jsfiddle.net/JoeSham/wp4d9fv1/10/ –

相關問題