两个uri模式与一个控制器

时间:2016-07-06 16:51:05

标签: angularjs

我希望有一个包含两种不同模式的网址,例如:

label

http://127.0.0.1:27469/views/Home.html#/forcast

正如你所看到的,我在第二个uri中也向服务器发送了一个参数。为此,我做了这个路由

http://127.0.0.1:27469/views/Home.html#/forcast/7

但是我得到了一个错误:

app.config(function($routeProvider){
    $routeProvider

    .when('/forcast',{
        templateUrl:'forcast.html',
        controller:'forcastController'
    });
    when('/forcast/:days',{
        templateUrl:'forcast.html',
        controller:'forcastController'
    })

});

此代码有什么问题?

3 个答案:

答案 0 :(得分:2)

您没有正确链接函数调用。你正在用分号结束第一个.when()。此外,您错过了第二次()之前的时段。您还将遇到一个问题,即您的所有请求都将在没有参数的情况下进入路由,切换路由的顺序,以便在提供参数时,它将以正确的路径着陆。

app.config(function($routeProvider){

    $routeProvider

    .when('/forcast/:days',{
        templateUrl:'forcast.html',
        controller:'forcastController'
    })
    .when('/forcast',{
        templateUrl:'forcast.html',
        controller:'forcastController'
    });
});

另一个建议,而不是在此声明2条路线,您可以将天数指定为可选参数:

app.config(function($routeProvider){

    $routeProvider

    .when('/forcast/:days?', {
        templateUrl: 'forcast.html',
        controller: 'forcastController'
    });

});

答案 1 :(得分:1)

问题在于你的语法。你有一个分号后的第一个时间,应该是一个时期。像这样:



app.config(function($routeProvider){
    $routeProvider

    .when('/forcast',{
        templateUrl:'forcast.html',
        controller:'forcastController'
    })
    .when('/forcast/:days',{
        templateUrl:'forcast.html',
        controller:'forcastController'
    });
});




答案 2 :(得分:-3)

当您无法加载某个模块时会出现此类错误!

确保将ng-route.js添加到您的html:

 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular-route.min.js">