それはいくつかの単純な問題のようですが、私はそれを数時間探していて、答えを見つけることができません. マウスオーバーが機能する場所でマウスアウトまたはマウスリーブが機能しないのはなぜですか? コードは次のとおりです。
HTML:
<div ng-app="test">
<div class="testdiv" data-test-mouseout=""></div>
</div>
CSS(この場合は重要ではないと思います):
.testdiv {
width: 100px;
height: 50px;
margin: 25px;
background: yellow;
position: relative;
}
.testHere {
position: absolute;
padding: 0;
margin: 0;
background: red;
width: 100%;
height: 10px;
top: -5px;
left: 0px;
}
JS:
var app = angular.module('test', []);
app.directive('testMouseout', function ($compile) {
return {
link: function (scope, iElement) {
iElement.bind('mouseover', function () {
iElement.html('<div data-test-mouseout-here="" class="testHere"> </div>');
$compile(iElement.contents())(scope);
});
}
};
});
app.directive('testMouseoutHere', function () {
return {
link: function (scope, iElement) {
iElement.bind('mouseout', function (e) {
e.target.style.backgroundColor = 'blue';
console.log('mouseout');
});
}
};
});
わかりました、それは何をすべきですか?黄色の div 100x50px が表示され、マウスオーバーすると、新しい赤い div が子として内部に表示されます。この赤い div にはマウスアウト バインディングがあるため、console.log "mouseout" のはずですが、発生しませんでした。しかし、2 番目のディレクティブで mouseover によって mouseout を置き換えると、機能します。それは変だ。
最初のディレクティブ内のテンプレートに ngMouseout/ngMouseleave を入れようとしましたが、同じ問題がありました。ngMouseout/ngMouseleave が機能しませんでした ngMouseover が機能しました。
ここにフィドルがあります:http://jsfiddle.net/rGAqw/
プランカーでも同じ: http://plnkr.co/edit/JPiHYO79QaNrJerMM59a