Ошибка «Неправильная левая часть в назначении» при использовании оператора NOT (!) - PullRequest
0 голосов
/ 14 апреля 2019

Я использую эту функцию:

$scope.myFunction = function(indexParent, childrenLength) {

    // close all inner accordion tabs
     for(i=0; i < childrenLength; i++) {
       !$scope.lettersandnumbers[indexParent].things[i].open = $scope.lettersandnumbers[indexParent].things[i].open;
     }

    // toggle parent tab
    $scope.lettersandnumbers[indexParent].open = !$scope.lettersandnumbers[indexParent].open;

 }

Здесь: <button ng-click="myFunction(0, 3)">Toggle a</button> Однако раздел «закрыть все вкладки внутреннего аккордеона» дает мне неверную левую часть в ошибке присваивания. Как я могу изменить код, чтобы он работал?

https://plnkr.co/edit/TlKhBZer1wYMW0XXBcqO?p=preview

Большое спасибо

UPDATE

ответ с несколькими поправками: https://plnkr.co/edit/aMD5rGxpe48lziTb6xPk?p=preview

1 Ответ

1 голос
/ 14 апреля 2019

Ваш код должен выглядеть как

$scope.myFunction = function(indexParent, childrenLength) {

    // close all inner accordion tabs
     for(i=0; i < childrenLength; i++) {
       $scope.lettersandnumbers[indexParent].things[i].open = !$scope.lettersandnumbers[indexParent].things[i].open;
     }

    // toggle parent tab
    $scope.lettersandnumbers[indexParent].open = !$scope.lettersandnumbers[indexParent].open;

 }

! был на левой стороне задания

EDIT:

Доказательство того, что вы не можете использовать ! на левой стороне:

var a = true;
console.log(a);
!a = a;

РЕДАКТИРОВАТЬ 2:

$scope.myFunction = function(indexParent, childrenLength) {

  // First close the outer tab
   $scope.lettersandnumbers[indexParent].open = !$scope.lettersandnumbers[indexParent].open;

  // Close all inner tabs if the outer tab is closed
  for(i=0; i < childrenLength; i++) {
    $scope.lettersandnumbers[indexParent].things[i].open = !$scope.lettersandnumbers[indexParent].open ? false : $scope.lettersandnumbers[indexParent].things[i].open;
  }
}

Здесь я использую троичный оператор , чтобы определить, должны ли внутренние вкладки закрываться или нет.

Я видел в вашем коде, что myFunction вызывается только для кнопки, вы должны найти способ заставить его работать, когда вы нажимаете на внешнюю гармошку

...