Angular js如何将参数传递给$ location.path()并在$ routeProvider中使用它来进行路由

时间:2016-07-27 18:01:20

标签: angularjs angularjs-routing

点击按钮,我有导航代码。

$s.onClick = function (pageObj) {
     $location.path('/Next');
}

这里param pageObj是包含链接(例如:http://sample.。),标题和其他键值的对象。现在我想将链接,标题作为参数传递给$ location.path,所以我尝试了

$location.path('/Next/' + pageObj.link + '/' + pageObj.title)

这里是链接,标题参数我想在下一页中使用。 pageObj.link再次为http,因此完整的路由URL无效导航。

以下是路由的代码

angularModule.config(function ($routeProvider) {
$routeProvider
    .when('/', {
        templateUrl: '/www/temp/Main.html',
        controller: 'MainController'
    })
    .when('/Next', {

        templateUrl: '/www/temp/Select.html',
        controller: 'SelectController'

    })
});

如何检查参数并使用这些参数导航到下一页。我不希望这些参数显示在网址中。

1 个答案:

答案 0 :(得分:0)

由于您不希望参数显示在网址中,因此绝对最简单的方法是使用$rootScope,如下所示:

第一页

$rootScope.routeParams.link = "/my/link/here";
$rootScope.routerParams.title = "My page title here";

第二页

$scope.link = $rootScope.routerParams.link;
$scope.title = $rootScope.routerParams.title;

注意

您需要在$rootScope.routeParams中定义app.config对象,类似于:

app.config(function($rootScope) {
    $rootScope.routeParams = {
        link: null,
        title: null
    }
});

您还需要将$rootScope注入您引用它的每个控制器,类似于:

app.controller('FirstPage_Ctrl', function($scope, $rootScope) {
    $rootScope.routeParams.link = "/my/link/here";
    $rootScope.routerParams.title = "My page title here";
});