javascript - Angularjs 显示隐藏 css 问题

标签 javascript jquery css angularjs

我在弄清楚如何使用 Angular 代码隐藏和显示图标/文本时遇到了一个难题。我对 Angular 完全陌生,并在下面努力尝试 fiddle代码。在这种 dom 场景中,如何使用 .closest 隐藏 + 或减号图标。

<div ng-controller="MyCtrl">
  {{name}}
  <div data-toggle="collapse" aria-expanded="true" data-target="#list-item-line-0" id="expandCollapseChild" ng-click="addExpandCollapseChildIcon()">
    <div>
      <div>
        <label>
          <div>
            <span class="icon-expand">-</span>
            <span class="icon-collapse">+</span>
          </div>
          <div>
            Click me to hide minus icon
          </div>
        </label>
      </div>
    </div>
  </div>
</div>


 var myApp = angular.module('myApp', []);

 function MyCtrl($scope) {
   $scope.name = 'Superhero';

   $scope.addExpandCollapseChildIcon = function() {
   alert('');
     if (angular.element('#expandCollapseChild').hasClass('collapsed')) {
       angular.element(this).closest('.icon-collapse').css('display', 'none');
     } else {
       if (angular.element('#expandCollapseChild').hasClass('collapsed')) {
         angular.element(this).closest('.icon-collapse').css('display', 'block');
       }
     }
   }

最佳答案

在 Angular 中,这是错误的做法。您实际上不应该显示或隐藏 Controller 内的元素。这是将 jQuery 样式(直接在 DOM 上工作)应用于 Angular。

在 Angular 中,您会使用 ng-if、ng-show 或 ng-class 之类的东西,所有这些都可以链接回可通过 Controller 访问的作用域对象上的属性。

这里有一些例子:

<div ng-if="myProp === 'ShowMe'">
<div ng-show="myProp === 'ShowMe'">
<div ng-class="{myCssClass: myProp === 'ShowMe'">

在你的 Controller 中,你会有这样的东西:

function MyCtrl($scope) {
    $scope.myProp = 'ShowMe';
    $scope.addExpandCollapseChildIcon = function(newPropValue) {
        $scope.myProp = newPropValue;
    }
}

这里有一些关于 ng-if、ng-show 和 ng-class 的文档链接:

关于javascript - Angularjs 显示隐藏 css 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35422808/

相关文章:

javascript - 通过 jquery 类隐藏元素

JavaScript 原型(prototype)困惑

javascript - 自动图像裁剪 JavaScript 工具建议

css - Bootstrap 4 中的垂直居中对齐

javascript - 为什么 javascript 看不到 style.filter 属性?

javascript - 来自 Ben Alman 的 Makeadder 示例

javascript - 使用 $(this)。 (".className") 访问类的特定实例

jquery - 如何解决这个跨浏览器问题?

javascript - 如何使用 jQuery 循环 3 个 div

javascript - jQuery 使用两个下拉菜单更改输入 css 样式