如何在AngularJS中以动态方式检查数组值?

时间:2015-07-30 12:18:12

标签: javascript angularjs checkbox

考虑所选数组有两个值

$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();
                }
            });
       }
      };

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

1 个答案:

答案 0 :(得分:-1)

我不确定这是否是您正在寻找的...您可以在"显示已激活" ...更改下面的plunker中的isClicked值上加上$ watch。

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