Javascript Angular指令没有将css类添加到另一个元素
您好,我正在尝试一个angular指令在单击按钮时更改另一个元素的CSS,但是尽管console.log向我显示该类已添加,但在inspector中仍然没有该类 模态定向Javascript Angular指令没有将css类添加到另一个元素,javascript,css,angularjs,Javascript,Css,Angularjs,您好,我正在尝试一个angular指令在单击按钮时更改另一个元素的CSS,但是尽管console.log向我显示该类已添加,但在inspector中仍然没有该类 模态定向 angular.module('App.shared.modal') .directive('openModal', function (Config) { function link(scope, element, attrs) { element.bind('click', function() {
angular.module('App.shared.modal')
.directive('openModal', function (Config) {
function link(scope, element, attrs) {
element.bind('click', function() {
var modal = angular.element(document.querySelector('#' + attrs.openModal)).css('display', 'block');
setTimeout(function(){ modal.className += ' modal-in'}, 10);
});
}
return {
restrict: 'AEC',
link: link
};
});
angular.module('App.shared.header')
.directive('appHeader', function (Config) {
function link(scope) {
scope.navLinks = [
{title: 'Home', href: 'home'},
{title: 'Help', href: 'seed-help'}
];
}
return {
templateUrl: Config.rootPath + 'shared/header/header-view.html',
link: link,
replace: true
};
});
视图,该视图称为指令
<header class="">
<div class="u-max-full-width">
<div class="row homehubusa-header">
<div class="one-third column">
<img src="./imgs/homehubusa.png" alt="logo homehubusa" class="logo"/>
</div>
<div class="two-thirds column">
<ul class="menu u-pull-right">
<li>
<a href="#">HomesUSA</a><span class="separator"> </span>
</li>
<li>
<a href="#">Support</a><span class="separator"> </span>
</li>
<li>
<a href="#">Contact Us</a>
</li>
<li class="callsign">
<a href="#" class="button button-danger" open-modal="modalLogin">Sign in</a>
</li>
</ul>
</div>
</div>
</div>
</header>
应用程序结构
<body ng-app="App">
<app-header></app-header> /* This is the header directive, here is the button */
<div class="ng-view"></div> /* Here is the modal */
<app-footer></app-footer>
</body>
/*这是标题指令,这是按钮*/
/*这是模态分析*/
您可以检查$apply()方法。因为您正在使用setTimeout()方法。setTimeout()是异步的,由JS引擎处理。不是Angular编译器,所以不知何故,您需要告诉Angular i Js引擎已更改某些内容,因此请尝试使用apply()。我不知道这会起作用。我的一个代码是我做的这件事。它成功了。您可以检查$apply()方法。因为您正在使用setTimeout()方法。setTimeout()是异步的,由JS引擎处理。不是Angular编译器,所以不知何故,您需要告诉Angular i Js引擎已更改某些内容,因此请尝试使用apply()。我不知道这会起作用。我的一个代码是我做的这件事。它成功了。您不需要使用超时来应用CSS。检查此处的简化示例:
您最好使用addClass
,因为它受以下各项的支持:
对于display:block
,我怀疑您的元素#modalloin
不在那里,因为从我的示例来看,它正在工作:。您不需要使用timeout
来应用CSS。检查此处的简化示例:
您最好使用addClass
,因为它受以下各项的支持:
对于display:block
,我怀疑您的元素#modalloin
不存在,因为从我的示例来看,它正在工作:。但是css显示块也应该是工作的,但不是工作的,但是css显示块也应该是工作的,但不是工作的
link: function(scope, element, attrs) {
element.bind('click', function() {
var target = angular.element(document.querySelector('#test'));
target.css('display', 'block');
target.addClass('red');
});