检查控制器中是否隐藏了AngularJS中的div?

时间:2016-04-13 21:47:35

标签: javascript angularjs controller ng-show

我有一个div,我隐藏/在我的HTML中使用angular显示,但我想知道如何检查它当前是否隐藏在我的控制器中。

到目前为止我找到的任何解决方案都是使用'hasClass'来查找ng-hide的jQuery,但我不想使用jQuery。

我的div看起来像这样

<div class="item item-input" ng-show="showDetails"></div>

<button class="button button-block button-light leftTextButton" 
ng-click="showDetails = ! showDetails; updateTimes()">
<i ng-class="{'icon icon ion-minus-round': showDetails, 
'icon icon ion-plus-round': !showDetails}"></i> End Time</button>

我想从我的控制器中我可以调用if($ scope.showDetails)并返回true或false,但它是未定义的。

如何检查div是否隐藏或显示在我的控制器中?感谢

1 个答案:

答案 0 :(得分:1)

我猜你有一个范围问题。将它传递给将检查它的功能是最好的选择。否则,如果它在范围内,控制器应该能够访问它。

&#13;
&#13;
angular.module('MyApp', [])
  .controller('MyController', ['$scope',
    function($scope) {
      $scope.myBoolean = false;

      $scope.checkMyBooleanOnScope = function() {
        alert($scope.myBoolean);
      };

      $scope.checkMyOtherBooleanOnScope = function() {
        alert($scope.myOtherBoolean);
      };

      $scope.checkBooleanByPassingIt = function(bool) {
        alert(bool);
      };
    }
  ]);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="MyApp" ng-controller="MyController">
  <p>myBoolean predefined in the controller:{{myBoolean}}
    <input type="checkbox" ng-model="myBoolean" />
  </p>
  <p>
    <button ng-click="checkMyBooleanOnScope()">checkMyOtherBooleanOnScope</button>
    <button ng-click="checkBooleanByPassingIt(myBoolean)">checkMyBooleanByPassingIt</button>

  </p>
  <p>myOtherBoolean defined on the page with ng-model:{{myOtherBoolean}}
    <input type="checkbox" ng-model="myOtherBoolean" />
  </p>
  <p>
    <button ng-click="checkMyOtherBooleanOnScope()">checkMyBooleanOnScope</button>
    <button ng-click="checkBooleanByPassingIt(myOtherBoolean)">checkMyOtherBooleanByPassingIt</button>
  </p>

</div>
&#13;
&#13;
&#13;