2012-10-08 12 views
9

Tengo un problema con el enlace de una entrada desde el interior de una vista. Pensé que se vincularía al alcance del controlador, pero parece ser vinculante para un ámbito hijo, por lo que no se actualiza más arriba.AngularJS: la entrada no es vinculante para el alcance esperado cuando dentro de una vista

Otros elementos se unirán como espero si están dentro de una repetición ng (no estoy seguro de por qué).

He aquí un ejemplo:
http://jsfiddle.net/hMpsB/1/

¿Cuál es la mejor manera de obligar a la entrada para el ámbito correcto si no es dentro de un ng de repetición?

Respuesta

16

En su ejemplo usted tendrá una mejor unión de suerte que su $scope.test a un objeto en lugar de un tipo simple como esto:

$scope.test = { val: "test value" }; 

Se puede ver this fiddle para un ejemplo de trabajo.

El ámbito secundario que se crea en el ngView va a copiar su valor y desde el original $scope.test es una cadena primitiva no tiene ningún vínculo con el valor de los padres para que su entrada será modificar la copia ámbito secundario. Cuando se vincula a un objeto, su ámbito hijo tiene una copia de la referencia del objeto, pero finalmente modificará la misma instancia del objeto.

Puede echar un vistazo a this question para obtener más información sobre cómo crear un servicio para conservar los datos en varios controladores (que es un poco similar a su pregunta).

También puede considerar el uso de $parent como se describe en this answer, ya que Mark menciona que no está documentado y puede ensuciarse si se introduce otro ámbito para niños en alguna parte.

Cuestiones relacionadas