0

我对在我的应用程序中使用的路由提供程序感到有些困惑。我正在使用 grunt 来丑化这一切,所以我开始怀疑这是否是其中的一部分?

无论如何,一些带有 app.config 的代码示例:

$locationProvider.html5Mode(true);

$routeProvider.when('/home', {
    controller: 'theAppController',
    template: ''
}).otherwise({
    redirectTo : '/default'
});

控制器(暂时位于 app.js 中)

app.controller("theAppController", function($scope){
    console.log("I'm an App controller!!!!!");
});

在 app.run 我打电话给这个:

.run(
    ['$route', '$rootScope', '$location', function($route, $rootScope, $location) {
        console.log($route);
    }]
)

哪个在输出

Object {routes: Object, reload: function}
current: e.extend.e.extend
    $$route: Object
        controller: "theAppController"
        keys: Array[0]
        originalPath: "/home"
        regexp: /^\/home$/
        reloadOnSearch: true
        template: ""
        __proto__: Object
locals: Object
params: Object
pathParams: Object
__proto__: Object
reload: function (){u=!0;a.$evalAsync(l)}
routes: Object
__proto__: Object

作为一个快速测试,看看 $routeProvider 是否真的被击中,我跑了 (home1)

$routeProvider.when('/home1', {
    controller: 'theAppController',
    template: ''
}).otherwise({
    redirectTo : '/default'
});

哪个正确地击中了其他地方并将网址更改为 /default

我可以看到,通过转储路由服务,当前路由设置正确,但是模板(它是空的,虽然经过测试并且没有显示任何内容)和该路由的控制器都没有加载,我什至无法使用加载了不正确的控制器。

对此有什么想法吗?

快速编辑:我也在我的html中使用

<div ng-view></div>
4

1 回答 1

0

我不完全确定您的问题到底在问什么,但我感觉您在重定向到 /default 时无法加载任何内容,这是因为您没有处理路由:

$routeProvider.when('/home', {
    controller: 'theAppController',
    template: ''
}).when('/default', {
    controller: 'theDefaultController',
    template: '<p>You have been redirected to the default route<p>'
}).otherwise({
    redirectTo : '/default'
});

app.controller("theDefaultController", function($scope){
    console.log("I'm the Default controller!!!!!");
});
于 2014-10-02T07:24:08.093 回答