尝试创建自定义提供程序并在应用程序配置期间使用它。在配置阶段获取错误“由于未知提供程序'configRoutesProvider'而无法实例化模块应用程序'”。 提供者代码:
(function () {
'use strict';
angular.module('app-routing', [])
.provider('configRoutesProvider', function () {
this.$get = ['$http', getRoutesProvider];
function getRoutesProvider($http) {
return {
getRoutes: function ($http) {
return $http.get('https://localhost:44311/api/account/routes').then(function (results) {
return results;
});
}
};
}
});
}).call(this);
在app.js代码中获取对'app-routing'模块的引用:
(function () {
'use strict';
var app = angular.module('app',
[
'ngRoute', // routing
'LocalStorageModule', // local storage
'app-routing'
]);
app.run();
})();
在config.js中尝试引用提供程序时出现上述错误:
app.config(['$routeProvider', 'configRoutesProvider', routeConfigurator]);
function routeConfigurator($routeProvider, configRoutesProvider) {
var routes = configRoutesProvider.getRoutes();
routes.forEach(function (r) {
$routeProvider.when(r.href, {
controller: r.controller,
templateUrl: r.templateUrl
});
});
$routeProvider.otherwise({ redirectTo: '/home' });
}
在index.html中,脚本注册的顺序如下:
<script src="app/routesProvider.js"></script>
<!-- Load app main script -->
<script src="app/app.js"></script>
<script src="app/config.js"></script>
无法理解我想念的是什么?
答案 0 :(得分:9)
在角度方面,提供商的名称上没有provider
部分,因此我们的想法是:
angular.module('foo').provider('configRoutes', function() { });
而不是:
angular.module('foo').provider('configRoutesProvider', function() { });
但是当你将它注入配置时,你必须把它:
angular.module('foo').config(function(configRoutesProvider) { });
因此,在您的示例中,删除定义上的provider
部分。
答案 1 :(得分:-1)
档案: route.js
var appRoutes = angular.module('appRoutes',['ngRoute'])
appRoutes.config(function($routeProvider,$locationProvider){
$routeProvider
.when('/',{
templateUrl: 'app/views/pages/home.html'
})
.when('/about',{
templateUrl: 'app/views/pages/about.html'
})
.otherwise({ redirectTo: '/'});
console.log('Testing routes routes...');
$locationProvider.html5Mode({
enabled: true,
requireBase: false,
});
});
及其-作品。 这是在route.js文件中定义路由的另一种方法。 在这里我正确地给出路径并使用$ routeProvider,$ locationPRovider,ngroute