AngularJs $ scope变量可以有条件地相互绑定吗?

时间:2019-03-28 13:16:02

标签: angularjs

这是我的问题

我正在尝试使用全局切换来使表单切换基本使用ng-model进行检查和取消选中。

$scope.globalToggle = 
{
    "toggle": true
}

$scope.Toggles = 
{
    "toggle1": true,
    "toggle2": true,
    "toggle3": true,
}

这是我试图有效实现的目标:

  • 如果选中了全局切换,则全部设置为true或false。
  • 如果未选中任何切换,则将global设置为false。
  • 如果选中了任何切换,并且还选中了其他两个切换 然后将global设置为true。

目前,我已经设法使用了一个很长的作用域函数,并向每个复选框元素添加了ng-click来实现此目的,但是我希望有一些更好的方法来实现我的目标,而我不必使用ng单击我的元素。在使用ng-model从DOM更改变量的情况下,这两个变量之间是否可能存在绑定关系,可以根据条件更改其值?

1 个答案:

答案 0 :(得分:1)

在这里您可以轻松地完成所需的操作:) 您只需要在切换上放置ng-click指令并编写算法 基本上是:

    globalToggleClicked = function() {
      for (var toggle in $scope.Toggles) {
        if ($scope.globalToggle.toggle == true)
          $scope.Toggles[toggle] = true;
        else
          $scope.Toggles[toggle] = false;
      }
    };

    toggleClicked = function(toggle){
     if (toggle == false)
      $scope.globalToggle.toggle = false;
     else if (toggle == true) {
      var nbChecked = 0;
      for (var t in $scope.Toggles) {
       if ($scope.Toggles[t] == true)
        nbChecked++;
      }
      if (Object.keys($scope.Toggles).length == nbChecked)
       $scope.globalToggle.toggle = true;
    }
   };

multi toggle management

我知道它是ng-click的,但是您实际上没有其他方法可以做到