我已经设置了一个控制器,我在其中调用服务中定义的函数。
angular.element(document).ready(function() {
FilterDataService.checkForFilters($scope.mediaTypeList, 'filterAddMediaType');
});
以下是功能:
this.checkForFilters = function(list, filterSection) {
if (list < 1) {
document.getElementById(filterSection).style.display = 'none';
}
else {
document.getElementById(filterSection).style.display = 'inline-block';
}
};
在我的视图和控制器加载后,调用此函数并获取结果没有问题。但是,当我在页面视图+控制器加载上调用此函数时,我收到以下错误
TypeError: Cannot read property 'style' of null
错误在于此行
document.getElementById(filterSection).style.display = 'none';
我认为这个问题是因为我试图在尚未加载的div元素上设置样式,所以我将其放入以下内容:
angular.element(document).ready(function() {...
然而,这并没有解决我的问题。我做错了什么?
编辑:我也尝试了以下内容:angular.element('#' + filterSection).ready(function() {
document.getElementById(filterSection).style.display = 'none';
});
答案 0 :(得分:0)
考虑使用ngClass而不是传统的jQuery方式。这样的事情应该有效。
{{1}}
答案 1 :(得分:0)
在接到@JB Nizet的帮助后,我提出了以下解决方案。最初我试图使用dom操作来实现我的结果,这不是有角度的方式。
这就是我为解决这个问题而采取的措施:
控制器功能调用:
$scope.filterAddSectionSource = FilterDataService.checkForFilters($scope.mediaTypeList);
服务功能:
this.checkForFilters = function(list) {
if (list < 1) {
return false;
}
else {
return true;
}
};
Dom元素:
<div class="filterInfoSection" id="filterAddSectionSource" ng-show="filterAddSectionSource">