使用NOT(!)运算符时出现“分配中的左侧无效”错误

时间:2019-04-14 20:20:58

标签: javascript angularjs logical-operators

我正在使用此功能:

$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

非常感谢

更新

有一些修改的答案:https://plnkr.co/edit/aMD5rGxpe48lziTb6xPk?p=preview

1 个答案:

答案 0 :(得分:1)

您的代码应类似于

$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;

 }

!在一个集合的左侧

编辑:

不能在左侧使用!的证明:

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;
  }
}

我在这里使用ternary operator来确定内部标签是否应该关闭。

我在您的代码中看到myFunction仅在按钮上被调用,当您单击外部手风琴时,您应该找到使其工作的方式