rootScope
モーダルを表示するためにと対話しようとしています。rootScope
と組み合わせて使用しようとしている非常に基本的なディレクティブがありng-show
ます。
ディレクティブのコードは次のとおりです。
.directive('modal', ['$rootScope', function ($rootScope) {
return {
restrict: 'A',
templateUrl: 'view/templates/modal-confirm.tpl.html',
link: function (scope, element, attrs) {
console.log(scope);
element.on('click', function() {
scope.$root.confirmModal.isVisible = true;
console.log('open modal');
});
}
}
}])
変数をログに記録すると、更新されたscope
ことが示されますが、モーダルは表示されません。を に変更すると、同じ結果が得られます。console.log は機能していますが、モーダルは表示されません。$root
isVisible: true
scope.$root.confirmModal.isVisible = true;
$rootScope.confirmModal.isVisible = true;
これはモーダル テンプレートのコードです。
<!-- Confirm Modal Template -->
<div ng-if="$root.confirmModal.isVisible" class="overlay">
<div class="overlay-content extended">
<span>{{ $root.confirmModal.content }}</span>
<div class="buttons">
<button ng-click="$root.confirmModal.isVisible = false;" class="btn btn-default half">Cancel</button>
</div>
</div>
</div>
$rootScope
ディレクティブでと対話することはできませんか?
scope
の代わりに使用して更新されたコード$rootScope
:
.directive('modal', ['$rootScope', function ($rootScope) {
return {
restrict: 'A',
templateUrl: 'view/templates/modal-confirm.tpl.html',
link: function (scope, element, attrs) {
scope.isVisible = false;
element.on('click', function() {
scope.isVisible = true;
console.log(scope);
console.log('open modal');
});
}
}
}])
<!-- Confirm Modal Template -->
<div ng-if="isVisible" class="overlay">
<div class="overlay-content extended">
<span>hello world</span>
</div>
</div>
しかし、同じ結果。