2015-06-17 3 views
1

Я хочу реализовать флажок select all (для множественного удаления).Angularjs: Выбрать все флажок

Это мой взгляд сценарий:

<input type="checkbox" name="chk_all" id="chk_all" ng-click="checkAll(this)" /> Select All 
<table> 
    <tr ng-repeat="user in allUsers"> 
    <td><input type="checkbox" ng-model="list" name="list[]" class="chk_all" value="{{user.user_id}}" id="{{user.user_id}}" ng-checked="checkedAll" /></td> 
    <td>{{user.username}}</td> 
    <td>{{user.fname}}</td> 
    <td>{{user.lname}}</td> 
    <td>{{user.mobile}}</td> 
    <td>{{user.email}}</td> 
    <td><a title="Edit User" href="#/edit_user/{{user.user_id}}" ><span class="fa fa-pencil"></span></a> | <a title="Delete User" id="" style="cursor:pointer;" ng-click="delete_user(user.user_id)" ><span class="fa fa-trash-o"></span></a></td> 
    </tr> 
</table> 

На "chk_all" флажок ниже все флажки должны проверяться или бесконтрольно.

Я хочу удалить выбранных пользователей при нажатии кнопки. Итак, как я могу получить выбранный идентификатор пользователя по методу http post.

Сценарий написан как:

$scope.testFunction=function(params) 
     { 
      $http.post("../admin/users/testFunction",{'params' : params}) 
       .success(function (data, status, headers, config) 
       { 
       console.log(data); 
       alert(1); 
       }) 

       .error(function(data, status, headers, config){ 

       }); 
     } 

функции контроллера:

public function testFunction() 
    { 
     $data = json_decode(file_get_contents("php://input")); 
     print($data->params); 
    } 

В функции теста (функция PHP), как я могу retrive выбран идентификатор пользователя? Любое решение? Примечание: Я сделал это с помощью javascript и php. Теперь приложение конвертируется в Angularjs, поэтому оно должно быть в angularjs.

ответ

1

Вы можете указать объекту 'user' свойство: 'checked', тогда флажок выглядит так: <input type="checkbox" name="list[]" class="chk_all" ng-model="user.checked" onclick="uncheck_select_all(this)" />. Затем в вашем представлении вы проверяете для каждого пользователя в allUsers, является ли user.checked == true, и если это так нажимает этого пользователя на массив. Затем поместите этот массив в свой пост http и обработайте удаление для каждого пользователя в массиве на стороне сервера.

Update

this В plnkr я показываю, что я имел в виду мой ответ + комментарии. Это не работает, если вы просто копируете-вставляете, потому что я использовал несколько разных имен. Если вы не можете понять решение с этим плунжером, я боюсь, что сделал все, что мог. Примечание. Вы можете заменить угловые. ForEach петли на обычные петли для более быстрой работы.

+0

Как я могу установить user.user_id на флажок? есть ли какой-нибудь пример кода? – VBMali

+0

Если вы выполняете итерацию через allUsers в своем представлении, если свойство user.checked == true, вы можете поместить user.user_id в массив. Но если вы просто хотите, чтобы user.user_id как значение этого флажка, вы можете просто добавить 'value =" {{user.user_id}} "' к вам checkbox – Guinn

+0

Ok. Хорошо. Я сделал с установкой значения для флажка.как value = "{{user.user_id}}". Теперь я хочу проверить или снять все флажки. – VBMali

0

Оформить заказ ng-checked в Angular Docs.

Вы можете добавить выражение к каждому флажку, который вы хотите проверить, на основе переменной $scope.

<input type="checkbox" name="chk_all" id="chk_all" ng-click="checkAll(this)" /> 
<input type="checkbox" name="chk_1" id="chk_1" ng-checked="checkedAll" /> 
<input type="checkbox" name="chk_2" id="chk_2" ng-checked="checkedAll" /> 
<input type="checkbox" name="chk_3" id="chk_3" ng-checked="checkedAll" /> 

В контроллере вы бы это:

$scope.checkAll = function() { 
    $scope.checkedAll = true; 
} 

Это установит переменную $scope.checkedAll истину делает ng-checked выражения истинного, которая будет проверять все флажки, используя это выражение.

Я изменил атрибут onchange на ng-click.

Смежные вопросы