У меня есть следующий компонент Angular 1.5:
(function () {
'use strict';
angular
.module('EmployeeInformation')
.controller('EmployeeDetailCtrl', EmployeeDetailCtrl)
.component('employeeDetail', EmployeeDetail);
var EmployeeDetail = {
templateUrl: '../views/components/employeeDetail.html',
controller: 'EmployeeDetailCtrl as empdetail',
bindings: {
employee: '<'
}
};
function EmployeeDetailCtrl() { }
})();
Судя по примерам на сайте Angular, мне это кажется правильным. Однако, когда я включаю файл на свою страницу, я получаю сообщение об ошибке, говорящее о том, что он не может зарегистрировать компонент:
[$injector:modulerr] Failed to instantiate module EmployeeInformation due to:
TypeError: Cannot read property 'controller' of undefined
at $CompileProvider.registerComponent [as component]
Если я удалю ссылку на этот компонент, страница загрузится нормально. Кто-нибудь знает, что я делаю неправильно?
РЕДАКТИРОВАТЬ: у меня есть служба в том же модуле, составленная аналогично (которая завернута в функцию и без пустого массива - см. ниже), которая работает правильно:
(function () {
'use strict';
angular
.module('EmployeeInformation')
.service('EmployeeService', EmployeeService);
EmployeeService.$inject = ['$http'];
function EmployeeService($http) {
var apiPrefix = 'http://dvlemployees/api/employees';
this.find = find;
this.get = get;
this.getOne = getOne;
function find(queryObj) { }
function get() { }
function getOne(empNumber) { }
})();
EDIT2: благодаря @Frondor я понял, что истинная проблема заключалась в том, что я вызывал angular.component
для объекта до того, как определил его. Перемещение раздела var EmployeeDetail
наверх решило проблему.