如何在克隆事件绑定的同时克隆AngularJS节点?

时间:2017-01-18 14:28:25

标签: javascript jquery 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
       }
    }
}

我应该使用另一种方法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您应该在顶级控制器中使用ng-if或ng-show,而不是克隆元素。有一个属性可以检查您是否滚动过某个点。当属性计算结果为true时,该元素将显示出来。此外,您可以使用css使转换更顺畅(例如,轻松进/出),我不会依赖javascript来处理这类视觉行为。