2017-01-18 6 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を使用しません。

関連する問題