example angularjs scope angular-ngmodel

example - ng-model angularjs



AngularJS-ngmodel en ngrepeat no está actualizando(''dotted'' ngmodel) (1)

Estoy tratando de dibujar radioBoxes con una matriz angular, y después de eso obtener el valor de la radio marcada, pero el modelo no cambia su valor, ¿alguien puede ayudarme con esto?

Parte HTML

<div ng-app> <div ng-controller="CustomCtrl"> <label ng-repeat="user in users"> <input type="radio" name="radio" ng-model="radio" value="{{user.name}}" /> {{user.name}} </label> <br/> {{radio}} <br/> <a href="javascript:void(0)" ng-click="saveTemplate()">Save</a> </div> </div>

Parte angular

function CustomCtrl($scope) { $scope.radio = "John"; $scope.users = [ {"name" : "John", "Year" : 18}, {"name" : "Tony", "Year" : 19} ]; $scope.saveTemplate = function() { console.log($scope.radio); }; }

puedes ver ejemplos aquí - http://jsfiddle.net/hgf37bo0/2/


necesita configurar $scope.radio para que sea un objeto como este:

$scope.radio = { name: ''John'' }

y luego acceda desde html de esta forma:

<input type="radio" name="radio" ng-model="radio.name" value="{{user.name}}" />

aquí hay un jsfiddle de trabajo

Puede leer sobre por qué es necesario en esta respuesta

de documentos angularjs:

La herencia del alcance es normalmente sencilla, y a menudo ni siquiera necesita saber que está sucediendo ... hasta que pruebe el enlace de datos bidireccional (es decir, elementos de forma, modelo ng) a un primitivo (por ejemplo, número, cadena, boolean) definido en el ámbito principal desde dentro del ámbito hijo. No funciona de la forma en que la mayoría de la gente espera que funcione. Lo que ocurre es que el ámbito secundario obtiene su propia propiedad que oculta / sombrea la propiedad principal del mismo nombre. Esto no es algo que AngularJS está haciendo, así es como funciona la herencia prototípica de JavaScript.

...

Teniendo un ''.'' en sus modelos se asegurará de que la herencia prototípica esté en juego. Entonces, usa

<input type="text" ng-model="someObj.prop1">

más bien que

<input type="text" ng-model="prop1">

Si realmente quiere / necesita usar una primitiva, existen dos soluciones:

Use $ parent.parentScopeProperty en el ámbito secundario. Esto evitará que el ámbito hijo cree su propia propiedad. Defina una función en el ámbito principal y llámelo desde el elemento secundario, pasando el valor primitivo hasta el elemento principal (no siempre es posible)