【发布时间】:2016-04-12 20:30:41
【问题描述】:
我已经做了几天了,我觉得我错过了一些东西。我想创建一个 webapp 并开始设置我的 angularjs 基础。在设置我的 angularjs 基础时,我遇到了路由问题。这个问题看起来像是一个竞争条件,但我似乎无法找到它所在的位置。
启动我的 angularjs 网站时,路由无法正常工作。即使将 $location.path("/dashboard"); 放在 module.run 中也不会显示正确的视图。但是,当我在加载网站后转到浏览器的地址栏并删除“#/dashboard”中的“仪表板”时,它会将我重定向到“#/dashboard”并显示正确的视图。引导我的 Angular Web 应用程序时,路由似乎不起作用。
我尝试了ngRoute 和UI-Router。两者的结果相同。
github 上的 Web 应用程序。
app.ts:
require(['angular', 'ui-router'], (angular) => {
angular.module('monetaryreign.services', []);
angular.module('monetaryreign.ui', []);
var app = angular.module('monetaryreign', ['ui.router', 'monetaryreign.services', 'monetaryreign.ui']);
app.run(startup)
startup.$inject = ['$location'];
function startup($location) {
$location.path("/dashboard");
}
require(['angular', 'app/app.states'], (angular) => {
angular.bootstrap(document, ['monetaryreign']);
});
});
app.states.ts:
import angular = require('angular');
import dashboard = require('app/dashboard/dashboard.controller');
function routes($stateProvider: ng.ui.IStateProvider, $urlRouterProvider: ng.ui.IUrlRouterProvider) {
var f = dashboard
var baseUrl = document.getElementById('base-url').getAttribute('value');
$stateProvider
.state('dasboard', {
url: '/dashboard',
templateUrl: baseUrl + 'app/dashboard/dashboard.html',
controller: 'DashboardController',
controllerAs: 'vm'
})
$urlRouterProvider.when('', '/dashboard');
$urlRouterProvider.otherwise('/dashboard');
}
routes.$inject = ['$stateProvider', '$urlRouterProvider'];
angular
.module('monetaryreign')
.config(routes);
【问题讨论】:
-
您是否尝试删除该行:$urlRouterProvider.when('', '/dashboard');
-
感谢您的评论,刚试过。很遗憾没有解决。
-
并删除 $location.path("/dashboard");还有吗?
-
如果我在 module.run 中删除该语句,则什么也不会发生。客户端路由不发生(路由不在url中添加'#')
标签: javascript angularjs visual-studio typescript angular-ui-router