【问题标题】:How to check array value in dyamically in AngularJS?如何在AngularJS中动态检查数组值?
【发布时间】:2015-07-30 22:17:13
【问题描述】:

考虑选择的数组有两个值

$scope.selected = ["Show Activated","Show InActivated"]

下面的源代码工作正常,因为我在这里手动检查值,例如: 我正在检查Show ActivatedShow InActivated 然后我分配isActivetruefalse

我的要求是动态的,我必须这样做。如果是Show Activated,则赋值isActive 值为True。 请查看this plunker link...

plunker 中的以下源代码将不起作用,因为它是我在该链接中添加的用于理解目的的真实代码。但选择部分工作正常。

 // Object Filteration 
     $scope.objectFilterSubmit = function () {  
        if($scope.selected.length>1) {
             $scope.IsActive = "";
             $scope.selectedObjectDatas = $scope.getCustomObjectsBasedOnObjectTypeSelection($scope.IsActive);
             clearPartialElement();
             $scope.objectCreationPage();
        } else {
            angular.forEach($scope.selected, function(value,key){
                if(angular.equals(value, "Show Activated")) {   
                   $scope.IsActive = "true";   
                   $scope.selectedObjectDatas = $scope.getCustomObjectsBasedOnObjectTypeSelection($scope.IsActive);
                   clearPartialElement();
                   $scope.objectCreationPage();  
                }   
                else if(angular.equals(value, "Show InActivated")) {    
                     $scope.IsActive = "false";              
                     $scope.selectedObjectDatas = $scope.getCustomObjectsBasedOnObjectTypeSelection($scope.IsActive);
                     clearPartialElement();
                     $scope.objectCreationPage();   
                }
                else {
                     $scope.IsActive = "";
                     $scope.selectedObjectDatas = $scope.getCustomObjectsBasedOnObjectTypeSelection($scope.IsActive);
                     clearPartialElement();
                     $scope.objectCreationPage();
                }
            });
       }
      };

请任何人帮助我实现这一目标。

【问题讨论】:

  • 我很清楚...当单击“显示已激活”时,您希望变量 isActive 为真?
  • 这句话“我的要求是动态的,我必须这样做”是什么意思。你已经在动态地做这件事了。此外,逻辑看起来不正确,因为您在循环中覆盖了相同的变量“$scope.IsActive”。
  • @DWDuck 是的,我想将变量 isActive 设置为 true。但不是在点击的时候,点击完成后。我必须单击确定按钮我的页面。该数组中的那个时间可能有一个或多个值。使用该数组我必须设置 isActive 值。
  • @Rudra - 对不起。可能是我提到了错误的词。请检查我的cmets,我希望你现在清楚。如果没有,请告诉我。我会详细解释。

标签: javascript angularjs checkbox


【解决方案1】:

我不确定这是否是您要查找的内容...您可以将 $watch 放在“显示已激活”的 isClicked 值上...在下面的 plunker 中更改..

http://plnkr.co/edit/axJ5X9bTpMOTkNVS9oqk?p=preview

与您的一些变化。首先将一个 isActive 变量绑定到指令:

<so-table-directive is-active="isActive"></so-table-directive>

然后在你的指令中添加一个监视该值何时发生变化。

$scope.$watch('model.objectTypes[0].isChecked', function(val) {
  $scope.isActive = val;
})

这是你的意思吗?

如果您需要同时查看两个复选框,请使用 $watchGroup(角度 1.3 或更高版本):

$scope.$watchGroup(['model.objectTypes[0].isChecked', 'model.objectTypes[1].isChecked'], function(val) {
  if(val[0] && val[1]) {
    $scope.isActive="Show All";
  } else if(val[0]) {
    $scope.isActive=true;
  } else {
    $scope.isActive=false;
  }
})

【讨论】:

  • 不完全匹配。但我正在尝试使用您的代码。如果单击“全部显示”意味着我必须将 isActive 值设置为空“”或“全部显示”作为值。但目前如果我点击全部显示,它会显示为真。
  • 您可以使用更新的角度,例如 1.3 或更高版本吗?然后你可以使用 $watchGroup 来观看所有这些......
  • 如果两者都被点击,我更改了答案和 plunker 以更改结果。您需要使用更新的角度,以便 $watchGroup 可用。
猜你喜欢
  • 2017-03-22
  • 1970-01-01
  • 2017-03-09
  • 2016-05-09
  • 2017-03-22
  • 1970-01-01
  • 2015-05-25
  • 1970-01-01
  • 2018-06-15
相关资源
最近更新 更多