Я работаю над угловым проектом с угловым ui-маршрутом и использованием вложенных представлений, таких как:
$stateProvider.state('app', {
url: '/form',
views: {
'p1@modals': {
templateUrl: 'form1.html'
}
'p2@modals': {
templateUrl: 'form2.html',
controller: function($scope) {
//do some thing
}
}
}
})
однако у нас есть несколько подходов/формы, каждый из которых имеет контроллер, мы не хотим помещать весь код контроллера в файл js, поэтому мы записываем конфигурацию как:
$stateProvider.state('app', {
url: '/form',
views: {
'p1@modals': {
templateUrl: 'form1.html'
}
'p2@modals': {
templateUrl: 'form2.html',
controller: 'P2Controller.js'
}
}
})
в P2Controller.js мы определяем контроллер как:
define(['app'], function(app) {
app.controller('P2Controller', function($scope) {
});
})
проблема в том, как загрузить P2Controller.js и вызвать контроллер
Почему бы не использовать стандартную технику:
конфиг файл:
angular.module('yourModule', [])
.config(function($stateProvider) {
$stateProvider.state('app', {
url: '/form',
views: {
'p1@modals': {
templateUrl: 'form1.html'
},
'p2@modals': {
templateUrl: 'form2.html',
controller: 'P2Controller'
}
}
})
})
P2Controller.js:
angular.module('yourModule')
.controller('P2Controller', function() {
//your stuff
});
PS 'p1 @modals' означает, что модалы являются родительскими для представления 'p1'. Будьте осторожны с этой логикой