Ответ 1
Вы ссылаетесь на переменную "app" внутри вашего "login/login.ctrl.js", но переменная не определена (потому что вы импортируете контроллер перед его определением).
EDIT: В любом случае каждый модуль имеет свою собственную область, поэтому вы не можете ссылаться на переменную из другого модуля таким образом.
Решение, которое у меня на уме, следующее:
-
Внутри 'login/login.ctrl.js' создайте новый модуль
'use strict'; import angular from 'angular'; angular.module('ctrlsModule', []) .controller('LoginCtrl', function () { });
-
Добавьте модуль в зависимость от вашего основного модуля "app"
'use strict'; import angular from 'angular'; import uiRouter from 'angular-ui-router'; ... import './login/login.ctrl.js'; angular.module('app', [uiRouter, 'ctrlsModule', ...]) .config(function ($stateProvider, $urlRouterProvider) { $stateProvider .state('login', { url: '/login', templateUrl: '...', controller: 'LoginCtrl', controllerAs: 'login' }); });
Я не тестировал код, но считаю, что вы можете понять, что я имею в виду. Не уверен, что вы имеете в виду со вторым вопросом, но controllerAs
в ES6 должен работать так же, как в ES5.