Sto cercando di capire perché la mia funzione di timeout sta dando un errore, limitando in tal modo la modifica del valore del modello.Angular JS TypeError: f non è una funzione
angularExample.html
<!DOCTYPE html>
<html ng-app="Tutorial">
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script type="text/javascript" src="scripts/app.js"></script>
</head>
<body ng-controller="MyController">
<input type="text" ng-model="data" />
</body>
</html>
app.js
(function() {
var app = angular.module('Tutorial', []);
app.controller("MyController",function($scope,$timeout){
$scope.data="hi";
$timeout(callAtTimeout,3000);
var callAtTimeout=function(){$scope.data="hello";}
});
})();
Errore Snapshot:
La funzione è definita come una funzione anonima, ma non assegnato alla variabile 'callAtTimeout' fino a raggiungere la linea' var callAtTimeout = function() {...} '. Se si definisce una funzione con nome essa sarà disponibile sulla prima riga nell'ambito ('function myName() {...}'). – andlrc
Lo stesso vale per le variabili: 'var a = b + 1; var b = 0; 'Entrambe le variabili' a' e 'b' sono definite nella parte superiore dell'ambito ma quando' a' è assegnato 'b' non è ancora definito, e' a' valuterà quindi a 'a = indefinito + 1' che risulterà in 'NaN' – andlrc
@ dev-null grazie per il chiarimento – Tom