2016-04-29 1 views
0

Я работаю на новом сайте портфолио и хотите использовать AngularJS, чтобы отобразить свою работу и чистый CSS для форматирования макета и т.д.Ошибка: нг: areq Bad Аргумент AngularJS

Я нашел полезный учебник, который описал, каким образом структурировать приложение для дальнейшего масштабирования и создать файл дерева, так как:

enter image description here

так что каждый компонент является в основном мини MVC. Я настроил мои маршруты в app.routes.js и организованной app.module.js, как показано ниже:

app.module.js:

angular.module('app', ['ngRoute', 'appControllers', 'appResources']); 
angular.module('appControllers', ['ngRoute']); 
angular.module('appResources', ['ngResource']); 

app.route.js:

angular.module('app') 

    .config(['$routeProvider', function ($routeProvider) { 

     'use strict'; 

     $routeProvider 

     // route for the home page 
     .when('/', { 
      templateUrl : 'app/components/home/home-view.html', 
      controller : 'HomeCtrl' 
     }) 

     // route for the about page 
     .when('/about', { 
      templateUrl : 'app/components/about/about-view.html', 
      controller : 'AboutCtrl' 
     }) 

     // route for the contact page 
     .when('/contact', { 
      templateUrl : 'app/components/contact/contact-view.html', 
      controller : 'ContactCtrl' 
     }); 
}]); 

так что это моя настройка, на данный момент мне просто нужно увидеть, что каждый контроллер для маршрутов работает, а затем я начну добавлять в свой контент, но сразу же столкнулся с препятствием, поскольку контроллеры для каждого вида показывая как неопределенный.

Вот пример контроллера, они все же на данный момент, но с другим сообщением:

angular.module('appControllers') 

    .controller('AboutCtrl', ['$scope', '$http', function ($scope, $http) { 
    'use strict'; 
    $scope.message = 'This will be the about page'; 
    }]); 

HTML, является правильным и нет никаких опечаток, так что я почесал голову почему это проявляется как ошибка.

Это как-то связано с тем, как у меня установлены мои модули?

Любая помощь будет принята с благодарностью.

Большое спасибо заранее.

ответ

1

Эта ошибка говорит вам, что ваш HomeCtrl не определен. Вам нужно будет включить <script src="app/components/home/HomeController.js"></script> в ваш файл index.html, чтобы включить в ваш контроллер каждый из этих контроллеров.

Если вы хотите этого избежать, вы можете подделать свое приложение примерно так.

(function() { 
    "use strict"; 

    angular.module('appControllers') 

     .controller('HomeCtrl', ['$scope', '$http', function ($scope, $http) { 
      $scope.message = 'This will be the home page'; 
     }]) 

     .controller('AboutCtrl', ['$scope', '$http', function ($scope, $http) { 
      $scope.message = 'This will be the about page'; 
     }]); 

})(); 

Существует не один «лучший» способ сделать что-то. Все это касается потребностей вашего приложения и предпочтений.

+0

Учебник, который я нашел, предложил, чтобы этот формат был наилучшей практикой. Это звучит немного неуклюже, хотя модули и маршруты определены в заголовке? – Ben

+0

Это личное предпочтение. Существует два популярных способа создания угловых приложений. Во-первых, как вы это делаете в настоящее время, создавая каталог для каждого состояния/маршрута в вашем приложении, которое включает файлы '.html' и' .js'. Другим популярным способом является создание 1 модуля для каждого компонента. Например, вы должны создать модуль 'app.controllers', в котором будут размещены ВСЕ ваши контроллеры, а затем модуль' app.services', в котором будут храниться ВСЕ ваши сервисы. Я предпочитаю второй вариант для небольших проектов. – SuperVeetz

+0

Итак, если я создаю, скажу, что 10 разных типов страниц, мне нужно будет добавить тег сценария для каждого из моих контроллеров? Моя головная бирка будет довольно большой. Есть ли другой способ убедиться, что мои контроллеры приложений могут собирать каждый отдельный контроллер? – Ben