2016-03-24 8 views
0

Я пытаюсь сделать мой первый контроллер и получаю эту ошибку:AngularJS ошибка: [нг: areq] Аргумент «TestController» не является функцией, был неопределенным

Ошибка: [нг: areq] Аргумент ' TestController 'не является функцией, получил undefined

Я упростил свой код, чтобы найти ошибку, но не повезло. Мне кажется, что я создаю контроллер и массив книг в скрипте и ссылаюсь на букву контроллера по букве в div. Что мне не хватает?

<!doctype html> 
<html data-ng-app> 
<head> 
    <meta charset="utf-8"/> 
</head> 
<body> 

    <div data-ng-controller="TestController"> 
     <ul> 
      <li data-ng-repeat="b in books">{{ b.title + ' by ' + b.author }}</li> 
     </ul> 
    </div> 

    <script src="angular.js"></script> 
    <script> 
     function TestController() { 
      this.books = [{title: 'Angela', author: 'Donald Duck'}, {title: 'Angles', author: 'Dirty Harry'}]; 
     } 
    </script> 
</body> 
</html> 
+0

Я следую учебник, и как JB Nizet указывает мое знание «дату». Я обнаружил, что он прекратил работу после первой половины 1.3.0-бета. –

ответ

1

Прошло очень много времени, поскольку глобальные функции больше не являются контроллерами в angular.js. Вы должны зарегистрировать функцию в качестве контроллера в модуле:

<html ng-app="myApp"> 

и в коде JS:

angular.module("myApp", []).controller('TestController', function($scope) { 
    $scope.books = ...; 
}); 

Вашей Угловая знание устарелый. перечитайте документацию.

0

или более упрощенный способ

angular.module("myApp", []).controller('TestController', TestController); 

function TestController($scope) { 
$scope.books= [{title: 'Angela', author: 'Donald Duck'}, {title: 'Angles', author: 'Dirty Harry'}]; 

}