Я пытаюсь выяснить, почему моя функция тайм-аута дает ошибку, тем самым ограничивая изменение значения модели.Angular JS TypeError: f не является функцией
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";}
});
})();
Снимок Ошибка:
Функции определяются как анонимная функция, но она не присваивается переменной 'callAtTimeout', пока не достигнут строки' уага callAtTimeout = функция() {...} '. Если вы определяете именованную функцию, она будет доступна в первой строке в области ('function myName() {...}'). – andlrc
То же самое относится к переменным: 'var a = b + 1; var b = 0; 'Обе переменные' a' и 'b' определены в верхней части области, но когда' a' присваивается 'b', все еще не определено, и поэтому' a' будет оцениваться как 'a = undefined + 1', что приведет к 'NaN' – andlrc
@ dev-null спасибо за разъяснение – Tom