#javascript #angularjs
#javascript #angularjs
Вопрос:
Код находится по этой ссылке: http://jsbin.com/gekilazilo/edit?html ,js, вывод
Я скопировал код в свой sublime, затем запустил его в браузере Chrome. Информация о консоли была такой, как показано ниже … «Ошибка angular.js:7861: [ng: areq] Аргумент ‘MyController’ не является функцией, не определен http://errors.angularjs.org/1.2.0-rc.2/ng/areq?p0=MyControlleramp;p1=not a function, got undefined«
Я не знаю, почему коды в этой книге всегда сообщают об ошибке, когда я пробую их на своем собственном ноутбуке.
Это именно тот код, который я запускаю. для html:
<!DOCTYPE html>
<html lang="en" ng-app>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div ng-controller="MyController">
<input ng-model="expr"
type="text"
placeholder="Enter an expression" />
<h2>{{ parsedExpr }}</h2>
</div>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.js"></script>
<script src="Controller2.js">
</html>
для Controller2.js:
function MyController($scope, $parse) {
$scope.person = {
name: "Ari Lerner"
};
$scope.$watch('expr', function(newVal, oldVal, scope) {
if (newVal !== oldVal) {
// Let's set up our parseFun with the expression
var parseFun = $parse(newVal);
// Get the value of the parsed expression, set it on the scope for output
scope.parsedExpr = parseFun(scope);
}
});
};
Комментарии:
1. Здесь есть два файла; один HTML, один JavaScript. Вы действительно загружали файл JavaScript в свой HTML, когда копировали его? В любом случае, похоже, что на этот вопрос нет ответа, потому что он не связан с плохим кодом, он связан с какой-то неизвестной разницей в вашей среде, которую другие не смогут воспроизвести, не делая предположений, подобных тому, которое я сделал.
2. Спасибо за совет. Я отредактировал вопрос и загрузил код. Я не уверен, является ли проблема окружающей среды. Раньше я не менял настройки среды своего компьютера…
3. даже если бы этот код должен был работать, я бы не рекомендовал писать angular таким образом. Angular 1.2.x выпущен в 2012 году, и в более новых версиях произошли значительные изменения, в том числе удаление «глобальных» контроллеров, подобных этому, и удаление поддержки пробела
ng-app
, по уважительной причине. Не начинайте изучать фреймворк сейчас со старой версии, используя устаревший синтаксис.
Ответ №1:
Вам не хватает некоторого закрытия });
вашего выражения наблюдения
function MyController($scope, $parse) {
$scope.person = {
name: "Ari Lerner"
};
$scope.$watch('expr', function(newVal, oldVal, scope) {
if (newVal !== oldVal) {
var parseFun = $parse(newVal);
scope.parsedExpr = parseFun(scope);
}
});
};