Якщо ви хочете ввести залежність (скажімо, від служби), щоб викликати форму функції у маршрутах (.config), як показано нижче templateProvider.getTemplate ('about')
.state('index.about', {
url: "/about",
templateUrl: templateProvider.getTemplate('about'),
controller: 'AboutCtrl',
controllerAs: 'about',
data: {pageTitle: 'About Us Page'}
})
Ви повинні створити Постачальника. Не служба, ані завод.
Ось реальний приклад Постачальника, який генерує шлях до шаблону з імені:
(function () {
'use strict';
angular
.module('mega-app')
.provider('template', provider);
function provider(CONSTANT) {
this.$get = function () {
return {}
};
this.getTemplate = function (name) {
return CONSTANT.TEMPLATES_URL + name + '/' + name + '.html';
}
this.getComponent = function (name) {
return CONSTANT.COMPONENTS_URL + name + '.html';
}
};
})();
Використання такого Постачальника в маршрутах (.config) буде таким:
(function () {
'use strict'
angular
.module('mega-app')
.config(routes)
function routes($stateProvider, $urlRouterProvider, templateProvider) {
$stateProvider
//----------------------------------------------------------------
// First State
//----------------------------------------------------------------
.state('index', {
abstract: true,
url: "/index",
templateUrl: templateProvider.getComponent('content'),
controller: 'IndexCtrl',
controllerAs: 'index',
})
//----------------------------------------------------------------
// State
//----------------------------------------------------------------
.state('index.home', {
url: "/home",
templateUrl: templateProvider.getTemplate('home'),
controller: 'HomeCtrl',
controllerAs: 'home',
data: {pageTitle: 'Home Page'}
})
//----------------------------------------------------------------
// State
//----------------------------------------------------------------
.state('index.about', {
url: "/about",
templateUrl: templateProvider.getTemplate('about'),
controller: 'AboutCtrl',
controllerAs: 'about',
data: {pageTitle: 'About Us Page'}
})
//----------------------------------------------------------------
// Default State
//----------------------------------------------------------------
$urlRouterProvider.otherwise('/index/home')
}
})()
VIP Примітка:
щоб ін'єктувати провайдера, потрібно постфіксувати його xxxProvider (це ім'я провайдера не слід фіксувати, лише під час ін'єкції в .config).
$httpлише для конфігурації, тобто як$httpProvider: docs.angularjs.org/api/ng/provider/$httpProvider