AngularJS - 将变量传递给控制器

时间:2016-10-11 02:38:35

标签: angularjs routes

我需要向控制器发送一个参数

function config($routeProvider, $locationProvider) {

    $routeProvider

        .when('/url-1', {
            parameter: 1
        })

        .when('/url-2', {
            parameter: 2
        })

        .otherwise({
            redirectTo: '/url-1'
        });

    $locationProvider.html5Mode({
        enabled: true,
        requireBase: true
    });
}

这是我的控制器

function MyController(parameter) {

    console.log(parameter);

}

在视图中我只有两个链接

<a ng-href="/url-1">url-1</a>
<a ng-href="/url-2">url-1</a>

我是否需要在$ routeProvider中指定控制器? 我只有一个控制器。我没有加载视图 我只需要根据$ routeProvider

发送的参数做一个console.log(参数) 谢谢你!

2 个答案:

答案 0 :(得分:0)

这是定义路线的好方法,假设你有100条路线,那么路线定义会增加到那个数字。而是多条路线具有单一通用路线。

并将控制器分配给您可以访问$ routeParams API的路线,以获取路线中可用的参数。

配置

function config($routeProvider, $locationProvider) {

    $routeProvider
    .when('/url/:id', {
        controller: MyController
    })
    .otherwise({
        redirectTo: '/url/1'
    });

    $locationProvider.html5Mode({
        enabled: true,
        requireBase: true
    });
}

控制器

function MyController($routeParams) {
    console.log($routeParams);
}

如果您不想为每条路线放置另一个控制器,那么您可以通过在应用程序的运行块内放置routeChangeSuccess事件来跟踪路径更改,如下所示

app.run(function($rootScope, $routeParams ) {
     $rootScope.$on('routeChangeSuccess', function() {
        console.log($routeParams);
     }
});

或者你可以在页面控制器内部放置该事件。

function MyController($scope, $routeParams) {
    console.log("Parameters on page load "+ $routeParams);
    $scope.$on('$routeChangeSuccess', function(event, next, current) {
       console.log($routeParams);
    }
}

答案 1 :(得分:0)

function config($routeProvider, $locationProvider) {

$routeProvider

    .when('/url-1', {
        params: {id : 1}
    })

    .when('/url-2', {
        params: {id : 2}
    })

    .otherwise({
        redirectTo: '/url-1'
    });

$locationProvider.html5Mode({
    enabled: true,
    requireBase: true
});

}

function MyController($routeParams) {
console.log($routeParams);

}