親コントローラからスコープを継承するディレクティブがあります。ディレクティブは、div要素で、3秒間ページをオーバーレイし、上/下矢印ボタンがクリックされない限り消えます。 div要素は、一種のモーダルとして機能します。これは私のDOMタイムアウトを使用してカスタムディレクティブ要素を表示および非表示にする
HTML
<div ng-show="volumeVisibility">
<display-volume-modal></display-volume-modal>
</div>
デフォルト設定はfalse
で上のコードです。 volumeVisibility === true
の場合、ボタンをクリックするとディレクティブが表示されます。ここまでは順調ですね。これらは私のコントローラに2つの関数です:
$scope.volumeVisibility = false;
$scope.timer = function(){
console.log("Timer");
$scope.volumeVisibility = false;
};
$scope.displayVolumeModal = function(){
$scope.volumeVisibility = true;
console.log("modal");
};
タイムアウト作品や$scope.volumeVisibility === false
を設定します。ただし、divはページから削除されません。 Iディレクティブまたはコントローラに各機能を入れてみた
return {
restrict: 'E',
scope: false,
link: function(scope, elem, attrs){
scope.$watch('volumeVisibility', function(newVal, oldVal){
if (newVal === true){
window.setTimeout(scope.timer, 3000);
document.addEventListener('keydown', function(e){
//stuff
switch (e.which) {
case 38:
//stuff
break;
case 40:
//stuff
break;
}
});
}
}, true);
},
templateUrl: 'public/templates/displayVolumeModal.html'
}
:ここでディレクティブ(私は無関係な部分を削除した)からのコードです。このディレクティブのDIV要素をタイムアウト後に消滅させるには、どのような手順が必要ですか?
'scope.timer'関数本体を提供できますか? –
これは最初の一見から気になります: 'ng-show'を' display-volume-modal'の中に置き、 'div 'を取り除くようにしてください – ZenDD