Код Angularjs NG-BOOK не может работать

#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);
       }
  });
};