显示"所有","多个"或者"一个"根据Angularjs中的下拉选项数量

时间:2016-07-25 17:29:07

标签: javascript angularjs javascript-events

我有一个弹出窗口中的位置复选框列表,允许他们选择一个,多个或所有位置。 dropwdown的默认标签为" 选择地点"。

如何处理以下情况:

  1. 显示" 全部"如果用户选择" 全选"则在下拉列表中选择从列表中。

  2. 显示" 多个"如果用户选择多个位置。

  3. 显示" 位置名称"如果用户选择仅一个位置。

  4. 以下是我用来为list创建下拉列表和弹出窗口的代码。但是目前它只显示"选择位置"无论用户从下拉列表中选择什么。

     <div class="dropdown cp-dropdown">
                                    <div class="btn btn-default" data-toggle="dropdown">
                                        <!-- {{homeCtrl.newActivitySelectedLocation === '' ? 'Select Location' : homeCtrl.newActivitySelectedLocation.Name}}-->
                                        Select Location(s)
    
    
                                        <span class="pull-right caret"></span>
                                    </div>
                                    <div id="location-list" class="dropdown-menu cp-checkbox-dropdown menu-container" role="menu" ng-click="$event.stopPropagation();">
                                        <div>
                                            <input type="text" ng-model="homeCtrl.newActivitySearchLocation" />
                                        </div>
                                        <div id="location-list-container">
                                            <div class="row" ng-if="homeCtrl.newActivityLocationList.length > 0">
                                                <label class="cp-checkbox">
                                                    <input value="ALL" type="checkbox" id="select_all_locpop" ng-model="homeCtrl.newActivityLocationSelectAll" ng-click="homeCtrl.newActivityLocationFilter('All', homeCtrl.newActivityLocationSelectAll)" />
                                                    <span></span>Select All
                                                </label>
                                            </div>
                                            <div id="location-list-pop">
                                                <div class="row" data-ng-repeat="location in homeCtrl.newActivityLocationList | filter: {'Name':homeCtrl.newActivitySearchLocation}">
                                                    <label class="cp-checkbox">
                                                        <input value="{{location.Id}}" type="checkbox" ng-click="homeCtrl.updateActivityGrid('location-list-pop','select_all_locpop')" /><span></span>
                                                        {{location.Name}}
                                                    </label>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
    

1 个答案:

答案 0 :(得分:0)

将您的点击存储在临时列表中,并根据主列表和临时值之间的状态更新标签。

var  updateLocationDisplay = function(){

  if(tempList.length === mainList.length){
    $scope.locationLabel = "All";
  }else if(tempList.length > 1){
    $scope.locationLabel = "Multiple";
  }else if(tempList.length === 1){
    $scope.locationLabel = tempList[0];
  }else{
    $scope.locationLabel = "Select a location";
  }
};

$scope.locationClick = function(name){
   var index = tempList.indexOf(name);
   if(index > 0){
     // remove it
     tempList.splice(index, 1);   
    }
   else{
    // add it
     tempList.push(name);
  }

   updateLocationDisplay();
 };

}