AngularJS: ng-model não vinculado a ng-checked por checkboxes

Eu me referi a isso antes de fazer essa pergunta.

AngularJs não liga o ng-check com o ng-model

Se ng-checked for avaliado como true no lado html , o ng-model não será atualizado. Eu não posso ng-repeat como sugerido na pergunta acima, porque eu tenho que usar algum estilo para cada checkbox de seleção.

Aqui está o plunker que eu criei para ilustrar o meu problema.

Para ver o que eu quero, abra o console e clique no botão Submit . Por favor, não marque nenhuma checkbox de seleção.

Desde já, obrigado!

ngModel e ngChecked não devem ser usados ​​juntos.

ngChecked está esperando uma expressão, então, dizendo ng-checked="true" , você está basicamente dizendo que a checkbox de seleção sempre será marcada por padrão.

Você deve ser capaz de usar apenas ngModel , vinculado a uma propriedade booleana em seu modelo. Se você quiser algo mais, então você precisa usar ngTrueValue e ngFalseValue (que suportam apenas strings agora) ou escrever sua própria diretiva.

O que exatamente você está tentando fazer? Se você quiser que a primeira checkbox de seleção seja marcada por padrão, altere seu modelo – item1: true, ,.

Edit: você não tem que enviar o seu formulário para depurar o estado atual do modelo, btw, você pode simplesmente despejar {{testModel}} em seu HTML (ou

{{testModel|json}}

). Além disso, seus atributos ngModel podem ser simplificados para ng-model="testModel.item1" .

http://plnkr.co/edit/HtdOok8aieBjT5GFZOb3?p=preview

Você pode usar ng-value-true para dizer ao angular que seu ng-model é uma string.

Eu só poderia trabalhar com valor ng-true se eu adicionasse as citações extras assim (como mostrado nos documentos oficiais do Angular – https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D )

 ng-true-value="'1'" 

O que você poderia fazer é usar ng-repeat passando o valor de qualquer coisa que você esteja interagindo com o ng-checked e a partir daí utilizando ng-class para aplicar seus estilos dependendo do resultado.

Eu fiz algo parecido recentemente e funcionou para mim.

Pode declarar Como o in-ng-init também está se tornando verdadeiro

     AngularJS Plunker       


E você pode selecionar o primeiro e object também mostrado aqui verdadeiro, falso, flase

As diretivas ng-model e ng-checked não devem ser usadas juntas

Do Documentos:

ngChecked

Define o atributo checked no elemento, se a expressão dentro de ngChecked for ngChecked .

Observe que essa diretiva não deve ser usada junto com ngModel , pois isso pode levar a um comportamento inesperado.

– AngularJS ng-checked Diretiva API Referência


Em vez disso, defina o valor inicial desejado do controlador:

  Testing
Testing 2
Testing 3
 $scope.testModel = { item1: true };