尝试在angular中使用状态路由器:
var app =angular.module('myapp', ['ui.bootstrap','ui.router']);
app.controller('TabsDemoCtrl', function ($scope, $window) {
$scope.tabs = [
{ title:'Orders', content:'Dynamic content 1' },
{ title:'Awaiting settlement', content:'Dynamic content 2' },
{ title:'Complete', content:'Dynamic content 3' }
];
});
app.config(function($stateProvider,$state) {
// Now set up the states
$stateProvider
.state('orders', {
templateUrl: '../partials/orders.html',
controller: 'ordersCtrl'
});
$state.go('orders');
});
我收到此错误:
Uncaught Error: [$injector:modulerr] Failed to instantiate module WIP due to:
Error: [$injector:unpr] Unknown provider: $state
答案 0 :(得分:1)
provider
只能在配置阶段通过Provider
后期修复进行访问您想要访问$state
提供商,那么它将是$stateProvider
您无法在配置阶段访问$state
,$state
为provider
从功能中删除$state
将解决您的问题。
要重新定向到默认状态,我希望您使用$urlRouterProvider
&提及您的URL
,当/orders
与任何url
不匹配时会重定向到state
。
<强>配置强>
app.config(function($stateProvider, $urlRouterProvider) {
// Now set up the states
$stateProvider
.state('orders', {
url: '/order',//just for demonstration
templateUrl: '../partials/orders.html',
controller: 'ordersCtrl'
});
$urlRouterProvider.otherwise('/orders');
});
答案 1 :(得分:0)
在app模块中使用.run
运行块 - 在创建并使用注入器后执行 启动应用程序。只有实例和常量才可以 注入运行块。这是为了防止进一步的系统 在应用程序运行时配置。
运行块是Angular中与main方法最接近的东西。跑步 block是需要运行以启动应用程序的代码。它 在配置完所有服务后执行 注射器已创建。运行块通常包含代码 很难进行单元测试,因此应该单独声明 模块,以便在单元测试中可以忽略它们。
app.run(function($state) {
$state.go('orders');
});
app.config(function($stateProvider) {
// Now set up the states
$stateProvider
.state('orders', {
url : '/orders',
templateUrl: '../partials/orders.html',
controller: 'ordersCtrl'
});
});