无法读取null的属性'style' - angularjs

时间:2015-09-23 06:38:04

标签: angularjs

我已经设置了一个控制器,我在其中调用服务中定义的函数。

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';
    });

2 个答案:

答案 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">