ng-repeat表

时间:2018-04-18 00:57:41

标签: javascript angularjs list checkbox controller

我使用angularjs来显示带有复选框的json记录中的表格,我有两个问题:

首先:我默认需要所有复选框为true。使用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/

抱歉英语不是我的母语。谢谢!!

1 个答案:

答案 0 :(得分:2)

稍微修改了您的代码,而不是将对象分配给新数组,将新属性isSelected添加到现有的listado数组并绑定到该复选框并默认将其初始化为true。 / p>

            <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以验证复选框更改

Plunker http://jsfiddle.net/Vinthi/4atbzo6L/3/