Я использую angularjs, чтобы показать таблицу из записей json с флажком, и у меня есть две проблемы:
Первый: Мне нужно, чтобы все чекбоксы были установлены по умолчанию. Протестировано с помощью ng-init, но не работает. Или просто кнопка для переключения всех флажков true-false
Второй При снятии отметки с файла объект показывает кавычки ["", "", ""], но мне нужно показать что-нибудь, если не отмечено
Посмотреть
<div ng-controller = "TestController">
<table class = "table table-striped">
<tr>
<th>Seleccionar</th>
<th>Servicio</th>
<th>Detalle</th>
<th>Precio</th>
</tr>
<tr ng-repeat = "(key, value) in listado">
<td><input type = "checkbox" ng-model = "ids[$index]" ng-true-value = "{{value}}" ng-false-value = "{{ undefined }}" ng-selected = "checkAll"></td>
<td>{{ value.modelo }}</td>
<td>{{ value.detalle }}</td>
<td>{{ value.precio_in | currency:'$':0 }}</td>
</tr>
</table>
{{ ids | json }}
контролер
var myApp = angular.module('myApp', [])
.controller('TestController', ['$scope', function ($scope) {
$scope.listado = [];
$scope.ids = [];
$scope.listado = [ { "id_stock": "4", "oc_id": "4", "detalle": "Revisión de suspención", "cat_id": "16", "codigo": "m20.1", "marca": "", "parte": "", "precio_in": "5000", "id_prov": "1", "cantidad": "1", "id_bodega": "1", "nom_prov": "Proveedor de prueba 1", "modelo": "MECANIZADOS Y OTROS", "nombre": "Bodega Conchalí", "status": "EN BODEGA", "id_cat": "16" }, { "id_stock": "5", "oc_id": "4", "detalle": "Revisión de frenos", "cat_id": "16", "codigo": "m2.2", "marca": "", "parte": "", "precio_in": "4500", "id_prov": "1", "cantidad": "1", "id_bodega": "1", "nom_prov": "Proveedor de prueba 1", "modelo": "MECANIZADOS Y OTROS", "nombre": "Bodega Conchalí", "status": "EN BODEGA", "id_cat": "16" }, { "id_stock": "6", "oc_id": "4", "detalle": "Revisión de ruedas", "cat_id": "16", "codigo": "m20.3", "marca": "", "parte": "", "precio_in": "4500", "id_prov": "1", "cantidad": "1", "id_bodega": "1", "nom_prov": "Proveedor de prueba 1", "modelo": "MECANIZADOS Y OTROS", "nombre": "Bodega Conchalí", "status": "EN BODEGA", "id_cat": "16" }]; }]);
Проверить код http://jsfiddle.net/eCJ47/44/
Извините, что английский не мой родной язык. Спасибо !!
Да, мне нужен весь объект, а не только идентификатор



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Немного изменил ваш код, вместо того, чтобы назначать объект новому массиву, добавил новое свойство isSelected к существующему массиву listado и привязал его к флажку и инициализировал его как истинное значение по умолчанию.
<tr ng-repeat = "(key, value) in listado" ng-init = "value.isSelected = true;">
<td><input type = "checkbox" ng-model = "value.isSelected"></td>
<td>{{ value.modelo }}</td>
<td>{{ value.detalle }}</td>
<td>{{ value.precio_in | currency:'$':0 }}</td>
</tr>
Распечатайте listado, чтобы проверить изменения флажка
Плункер http://jsfiddle.net/Vinthi/4atbzo6L/3/
Хорошо, теперь значение флажка меняет значение между истиной или ложью (это служит мне для моей цели), но в моем первом коде я могу добавить или удалить весь объект с помощью ng-модели .... могу ли я справиться с этим?
Да, ng-true-value / ng-false-value принимает строковые значения, а не объекты, поэтому необходимо обрабатывать их при щелчке / изменении, например ng-change = "ids [$ index] = (value.isSelected && value) || undefined"
Вы назначаете
ng-modelцелый объект. Это то, что вы хотите? Разве не было бы чисто, если бы вы назначилиng-true-value = "{{value.id_stock}}"?