をコンパイル:
- (例えばngSwipeRight)要素に別のディレクティブを追加し、新規にいくつかのカスタム動作を追加指令。
例は次のようになります。ngSwipeRight
を追加すると、ユーザーが要素の上にスワイプしたときに、私はhistory.back()
を行うだろうmySwipeBack
。
私はこのように試してみました:
.directive('swipe', function($compile){
return {
restrict: 'A',
compile: function(el){
// I removed all the actual logic for demo purposes
// here I would add ng-swipe-right plus a handler
el.removeAttr('swipe');
var fn = $compile(el);
return function (scope) {
fn(scope);
};
}
}
});
をしかし、私は次のマークアップで問題に遭遇した:
<div ng-if='true'>
<h1 swipe>OUTSIDE
<div ng-if="true">INSIDE</div>
</h1>
</div>
"INSIDE" のテキストが描画されません。 このjsbinの動作を見ることができます:http://jsbin.com/tokofevuga/edit?html,js,output
最初のng-ifを削除すると、意図した通りに動作します。
誰かが理由を知っていますか?これを後ろ向きにしていますか?
誰かが私が上で説明したことを達成する方法の別のアイデアを持っていれば?
。なぜそれが起こるかわからない。 – koox00
はい、私はng-ifが必要です:) – sirrocco
@sirrocco指令の 'compile'関数のコードを参照して:なぜあなたは手動で要素をコンパイルしていますか? 'el.removeAttr( 'swipe')のみを持つようにコンパイル関数の最後の3行を削除した場合、それらは動作するためには、要素上にいくつかのディレクティブを追加する必要があるため、期待通りに動作します( –