Me referí a esto antes de hacer esta pregunta.
AngularJs no enlaza ng-comprobado con ng-model
Si ng-checkedse evalúa a trueen el htmllado, el ng-modelno se actualiza. No puedo ng-repeatcomo se sugiere en la pregunta anterior porque tengo que usar algunos estilos para cada casilla de verificación.
Aquí está el plunker que he creado para ilustrar mi problema.
http://plnkr.co/edit/YsOsPh3vjkPMUUDa6r2t
Para ver lo que quiero, abra la consola y haga clic en el Submitbotón. No marques ninguna casilla de verificación.
¡Gracias por adelantado!

ng-checkedse calcula como verdadero mediante una expresión. Para indicarng-modelque no está vinculado, usé verdadero allí. Al iniciar el controlador, quiero que todas las casillas de verificación estén desmarcadas. Después de una solicitud ajax, calculong-checkedpara marcar la casilla de verificación. Esto es cuando ming-modelno está actualizado.ngChecked. Su modelo está bien, solo necesita configurartestModel.item1 = truesu devolución de llamada ajax y luego llamar$scope.$apply()para actualizar su vista.ng-checkeden lugar deng-model... ¡nunca más!Puede usar ng-value-true para decirle a angular que su ng-model es una cadena.
Solo podría hacer que ng-true-value funcione si agregué las comillas adicionales así (como se muestra en los documentos oficiales de Angular: https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D )
ng-true-value="'1'"fuente
Lo que podría hacer es
ng-repeatpasar el valor de lo que sea que esté iterandong-checkedy desde allí utilizarng-classpara aplicar sus estilos según el resultado.Hice algo similar recientemente y funcionó para mí.
fuente
Puede declarar como el ng-init también se vuelve cierto
<!doctype html> <html ng-app="plunker" > <head> <meta charset="utf-8"> <title>AngularJS Plunker</title> <script>document.write('<base href="' + document.location + '" />');</script> <link rel="stylesheet" href="style.css"> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.js"></script> <script src="app.js"></script> </head> <body ng-controller="MainCtrl" ng-init="testModel['item1']= true"> <label><input type="checkbox" name="test" ng-model="testModel['item1']" /> Testing</label><br /> <label><input type="checkbox" name="test" ng-model="testModel['item2']" /> Testing 2</label><br /> <label><input type="checkbox" name="test" ng-model="testModel['item3']" /> Testing 3</label><br /> <input type="button" ng-click="submit()" value="Submit" /> </body> </html>Y puede seleccionar el primero y el objeto también se muestra aquí verdadero, falso, flase
fuente
ngInit. Se puede abusar de esta directiva para agregar cantidades innecesarias de lógica a sus plantillas. Consulte la referencia de la API de la directiva AngularJS ng-init .Las directivas
ng-modelyng-checkedno deben usarse juntasDe los Docs:
En su lugar, establezca el valor inicial deseado desde el controlador:
<input type="checkbox" name="test" ng-model="testModel['item1']" ̶n̶g̶-̶c̶h̶e̶c̶k̶e̶d̶=̶"̶t̶r̶u̶e̶"̶ /> Testing<br /> <input type="checkbox" name="test" ng-model="testModel['item2']" /> Testing 2<br /> <input type="checkbox" name="test" ng-model="testModel['item3']" /> Testing 3<br /> <input type="button" ng-click="submit()" value="Submit" />$scope.testModel = { item1: true };fuente
No necesita
ng-checkedcuando lo usang-model. Si está realizando CRUD en su formulario HTML, simplemente cree un modelo para elCREATEmodo que sea coherente con suEDITmodo durante el enlace de datos:Modo CREAR: modelo solo con valores predeterminados
$scope.dataModel = { isItemSelected: true, isApproved: true, somethingElse: "Your default value" }Modo EDITAR: modelo de la base de datos
$scope.dataModel = getFromDatabaseWithSameStructure()Entonces, ya
EDITsea enCREATEmodo o , puede utilizar constantemente sung-modelpara sincronizar con su base de datos.fuente