javascript - 来自 Controller 中多个 ng-show 函数的单个函数

标签 javascript angularjs

我有几个用 Angular 编写的函数,用于通过范围在页面上显示多个 ng-show 属性。我试图使用 if else 语句将所有三个函数放入一个函数中,但我无法让该函数第二次触发。我想知道是否有一种方法可以在单个函数中执行此操作,以及这种功能的最佳实践是什么。

JS Fiddle 在这里 - http://jsfiddle.net/ezy_/01L050mr/2/

这是目前分布在 3 个不同函数中的 JS。

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

function AppCtrl($scope) {
  $scope.skillsState = false;

  $scope.rolesState = false;

  $scope.qualsState = false;

  $scope.skillsStateTrigger = function() {
    $scope.skillsState = true;
    $scope.rolesState = false;
    $scope.qualsState = false;
  };

  $scope.rolesStateTrigger = function() {
    $scope.skillsState = false;
    $scope.rolesState = true;
    $scope.qualsState = false;
  };

  $scope.qualsStateTrigger = function() {
    $scope.skillsState = false;
    $scope.rolesState = false;
    $scope.qualsState = true;
  };
}

如果我将函数设置为从单个 statesTrigger(resp) 函数触发,我是否需要 $watch 或 $apply 函数来触发更新?

最佳答案

看看这里:updated with 1 function

  $scope.triggerState = function (state) {
    if (state == 'skills') {
      $scope.skillsStateTrigger();
    } else if (state == 'roles') {
      $scope.rolesStateTrigger();
    } else if (state == 'quals') {
      $scope.qualsStateTrigger();
    }
  }
  <button ng-click="triggerState('skills')">Skills</button>
  <button ng-click="triggerState('roles')">Roles</button>
  <button ng-click="triggerState('quals')">Quals</button>

您甚至可以像这样在 HTML 本身中更加具体:State variable

<body ng-app="app" class="ng-scope">
  <div class="container ng-scope" ng-controller="AppCtrl">
    <button ng-click="currentState = 'skills'">Skills</button>
    <button ng-click="currentState = 'roles'">Roles</button>
    <button ng-click="currentState = 'quals'">Quals</button>
    <div class="row" ng-show="currentState == 'skills'" style="display: none;">
      Skills State Active
    </div>
    <div class="row" ng-show="currentState == 'roles'" style="display: none;">
      Roles State Active
    </div>
    <div class="row" ng-show="currentState == 'quals'" style="display: none;">
      Quals State Active
    </div>
  </div>
</body>

关于javascript - 来自 Controller 中多个 ng-show 函数的单个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912652/

相关文章:

javascript - 模态仅显示第一张图片(我应该如何将代码从 id 更改为 class?)

javascript - npm 开始抛出错误状态 1 require is not a function

javascript - 即使我使用 "on",点击也不会触发

angularjs - 使用angularjs在ng-repeat中显示数组的数量

javascript - 如何在表单输入中正确使用 ng-bind (单向绑定(bind))?

javascript - Angular 参数不是函数,未定义

javascript - 使用事件的 'li' 元素确定视频的源文件

javascript - jQuery FullCalendar 不呈现

javascript - typescript 。如何声明 DOM 集合?

angularjs - AngularJS 中 parent 的 ng-class-odd