Pregunta

algunos amigos y yo estamos trabajando en un proyecto.Este es el segundo proyecto en el que estoy trabajando con AngularJS, actualmente se utiliza la versión 1.2.3.

A pesar de que a veces se encuentran algunos de su comportamiento extraño, y no entiendo por qué está ocurriendo algo.

Así que esta es la situación...Tengo en mi archivo cshtml los siguientes puntos:

<div class="checkbox">
    <label>
         <input name="somecheckbox" type="checkbox" ng-click="click()" ng-model="displayRegardlessOfSomething" />
         <label>Display regardless of something</label>
    </label>
</div>

<h1>{{displayRegardlessOfSomething}}</h1>

En mi archivo javascript tengo el siguiente código dentro de una directiva:

En el principio:

$scope.displayRegardlessOfSomething = true;

Y tengo lo siguiente:

$scope.click = function () {
    console.log($scope.displayRegardlessOfSomething)
}

Y cada vez que me marque o desmarque la casilla de verificación siempre me cierto...Sin embargo, la peculiar es que el contenido dentro de la <h1></h1> etiquetas de cambios....Así, es como que me estoy cambiando el valor de una variable en el código html de la capa, pero no en la capa JavaScript...

¿Por qué está sucediendo esto?

Me han resuelto el problema mediante el uso principal de$.displayRegardlessOfSomething pero no entiendo por que se ha solucionado el problema...qué causó el problema en primer lugar?

¿Fue útil?

Solución

He intentado lo que hizo en el violín y funciona muy bien para mí.

http://jsfiddle.net/nicolasmoise/X9KYU/1/

El hecho de que lo que funciona para usted cuando usted utiliza $parent me hace pensar en un padre controlador falla aquí.Tal vez usted tiene dos variables con los mismos nombres?

P. S.:recuerde que en Javascript, primitivos se pasan por valor y los objetos se pasan por referencia.Esta es la causa de muchos errores Angular para los desarrolladores.Ver este violín donde puedo ilustrar mi punto.

con primitivas: http://jsfiddle.net/nicolasmoise/X9KYU/

con los objetos: http://jsfiddle.net/nicolasmoise/X9KYU/2/

Otros consejos

A menos que esté bastante seguro de que todo está viviendo en el mismo alcance, que casi nunca, debe siempre tener un punto en algún lugar de su expresión NG-Modelo .

myApp.controller('MyController2', function($scope) {

  $scope.model = { displayRegardlessOfSomething: true };

  $scope.click = function() {
    console.log($scope.model.displayRegardlessOfSomething);
  };
});

<input type="checkbox" 
       ng-click="click()" 
       ng-model="model.displayRegardlessOfSomething" />

Consulte este plunker para más detalles para Demo en vivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top