2017-01-18 72 views
0

我有一個指令,我想克隆該指令適用的元素。在該指令的一個特定用途中,該元素具有綁定了點擊處理程序的按鈕。我想我的克隆元素也有這個點擊處理程序。然而,我所知的用於克隆節點的傳統方法並不適合我。我到目前爲止嘗試過的一個例子如下。請記住這個例子是爲了演示而簡化的,我的指令的最終目的不僅僅是克隆元素。如何在克隆事件綁定的同時克隆AngularJS節點?

module.exports = function($window, $injector){ 
    return { 

     restrict: 'A', 
     link: function(scope, element, attrs){ 
      // Neither of the following methods actually copy the click handler over to the clone. 
      var myFirstClone = element[0].cloneNode(true); 
      var mySecondClone = angular.element(container).clone(true)[0]; 
      element[0].after(myFirstCone); // doesn't have the click handler 
     } 
    } 
} 

是否有另一種方法,我應該使用?謝謝!

+0

如果我理解得很好,你想克隆你的指令? –

+0

我想克隆該指令適用的元素。該指令是應用了屬性的。 –

+1

你的問題在於Angular不會分析你的克隆元素。在處理程序中克隆某些東西並不是AngularJS的方式 –

回答

0

您不應該克隆元素,而應該在頂級控制器中使用ng-if或ng-show。有一個財產,檢查您是否滾動過某個點。當屬性評估爲true時,元素將顯示出來。此外,你可以使用CSS來使轉換更平滑(例如緩進/退出),我不會依賴javascript來處理這種視覺行爲。