phonegap / iónico - $ alcance dentro de la función de click no se actualiza
-
21-12-2019 - |
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.
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);
};
}]);