首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS -将变量传递给控制器

AngularJS -将变量传递给控制器
EN

Stack Overflow用户
提问于 2016-10-11 10:38:35
回答 2查看 1.2K关注 0票数 0

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

代码语言:javascript
复制
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
    });
}

这是我的控制器

代码语言:javascript
复制
function MyController(parameter) {

    console.log(parameter);

}

在视图中,我只有两个链接

代码语言:javascript
复制
<a ng-href="/url-1">url-1</a>
<a ng-href="/url-2">url-1</a>

是否需要在$routeProvider中指定控制器?我只有一个控制器。我没有动态地加载视图,我只需要根据$routeProvider发送的参数做一个参数(console.log

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-10-11 11:04:07

这将是定义路由好方法,假设您有100个路由,那么路由器定义将增加到该数字。而不是多个路由具有单个通用路由。

并为路由分配一个控制器,您可以访问$routeParams接口获取路由中的可用参数。

配置

代码语言:javascript
复制
function config($routeProvider, $locationProvider) {

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

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

控制器

代码语言:javascript
复制
function MyController($routeParams) {
    console.log($routeParams);
}

如果您不想为每个路由放置另一个控制器,则可以通过将钩子放在应用程序run块内的routeChangeSuccess事件上来跟踪路由更改,如下所示

代码语言:javascript
复制
app.run(function($rootScope, $routeParams ) {
     $rootScope.$on('routeChangeSuccess', function() {
        console.log($routeParams);
     }
});

或者,您可以将该事件放在页面控制器中,该事件已放置在主体中。

代码语言:javascript
复制
function MyController($scope, $routeParams) {
    console.log("Parameters on page load "+ $routeParams);
    $scope.$on('$routeChangeSuccess', function(event, next, current) {
       console.log($routeParams);
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-10-11 11:58:42

代码语言:javascript
复制
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
});

}

代码语言:javascript
复制
function MyController($routeParams) {
console.log($routeParams);

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39969710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档