Могут ли переменные области видимости AngularJs быть условно связаны друг с другом? - PullRequest
0 голосов
/ 28 марта 2019

Так вот моя проблема

Я пытаюсь сделать переключатели формы с глобальным переключателем, чтобы в основном проверять и снимать все их, используя ng-модель.

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

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

Это то, что япытаясь добиться эффективного результата:

  • Если глобальный переключатель отмечен, установите для всех значение true или false.
  • Если какой-либо тумблер не отмечен, установите глобальный на false.
  • Если какой-либо тумблер отмечен, и два других тумблера также проверены, тогда установите global на true.

В настоящее время мне удалось использовать затянувшийся процесс работы с областью действия и добавить ng-click к каждому элементу флажка для достижения этой цели, но я надеялся, что есть какой-то лучший способ достичь своей цели, когда мне не нужно использоватьнг-клик по моим элементам.Возможно ли иметь некоторую связь между этими двумя переменными, которые могут изменять свое значение в зависимости от условий, когда они изменяются из DOM с использованием ng-модели?

1 Ответ

1 голос
/ 28 марта 2019

Здесь у вас есть отрывок, который делает именно то, что вы хотите :), вам просто нужно поместить директиву 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;
    }
   };

управление несколькими переключателями

Я знаю, что это с помощью ng-click, но у вас нет других способов сделать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...