Pregunta

Tengo una configuración simple donde quiero hacer clic en un botón y obtener los datos de un control de entrada. El problema es que la variable de alcance de $ dentro de la función de clics mantiene el mismo valor que cuando se ejecuta el código. Todo funciona exactamente como se planifica cuando creo un violín en la web.

html

<div ng-app>
    <div ng-controller="TodoCtrl">
        <input type="text" ng-model="authenticationCode">
        <br>
        <button class="button" ng-click="authenticate()">Authenticate</button>
        <br>
        <span>Auth info: {{authinfo}}</span>
        <br>
        <span>authenticationCode - {{authenticationCode}}</span>
    </div>
</div>

javascript

function TodoCtrl($scope) {
    $scope.authenticationCode = 'TESTER';
$scope.authenticate = function(){
        var t = $scope.authenticationCode;
    $scope.authinfo = t;
    };
}

Fiddle del código que trabaja en Web

cuando ejecuto esto en phonegap

  • cargas de pantalla con 'probador' en el cuadro de entrada
  • cargas de pantalla con 'probador' como valor para "autentication código -"
  • Cambio de "probador" en la entrada a 'Cambiadas' actualizaciones "Authentication Code -" a 'Cambiado'
  • haciendo clic en 'autenticar' pone el valor 'probador' como "Información de autenticación:"

No sé por qué $ scope.AuthenticationCode no está actualizando su valor en la función Autenticate. Tampoco estoy seguro de por qué funciona esto en la web y estoy teniendo problemas en PhoneGap con IONIC.

¿Fue útil?

Solución

Este problema puede estar ocurriendo porque los primitivos se están utilizando en el TodoCtrl, intente esto -

html

<div ng-controller="TodoCtrl">
    <label class="item item-input">
        <input type="text" ng-model="input.authenticationCode">
    </label>
    <br>
    <button class="button" ng-click="authenticate()">Authenticate</button>
    <br><br>
    <span>Auth info: {{input.authInfo}}</span>
    <br>
    <span>authenticationCode - {{input.authenticationCode}}</span>
</div>

javascript

.controller('TodoCtrl', ['$scope', function($scope) {
    $scope.input = {
        authenticationCode: 'TESTER',
        authInfo: ''
    };

    $scope.authenticate = function() {
        $scope.input.authInfo = $scope.input.authenticationCode;
        console.log('authInfo: ' + $scope.input.authInfo);
    };
}]);

Aquí hay un codepen de lo anterior

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