一尘不染

Angular:将参数从$ routeProvider传递给控制器

angularjs

我有多个调用同一控制器的路由,我想将不同的变量传递给它。

// Example
$routeProvider.
  when('/a', {
    templateUrl: 'test.html',
    controller: 'MyController' // should get passed 'exampleA'
  }).
  when('/b', {
    templateUrl: 'test.html',
    controller: 'MyController' // should get passed 'exampleB'
});

我知道我可以使用“解决”对象:

$routeProvider.
  when('/a', {
    templateUrl: 'test.html',
    controller: 'MyController',
    resolve: {test: function() { return true; }}
});

传递值作为依赖项:

app.controller('MyController', ['$scope', 'test', function ($scope, test) {
  console.log(test); // true
}

这种方法的问题是,如果其他路线上缺少resolve对象,则我的应用程序崩溃,并且我想传递可选的参数。

有什么方法可以(从路由提供者)将特定的参数传递给Controller?


谢谢


阅读 263

收藏
2020-07-04

共1个答案

一尘不染

路由:

$routeProvider.
  when('/a', {
    templateUrl: 'test.html',
    controller: 'MyController',
    paramExample: 'exampleA'
  }).
  when('/b', {
    templateUrl: 'test.html',
    controller: 'MyController',
    paramExample: 'exampleB'
});

访问:在控制器中注入$ route,然后使用它

 app.controller('MyController', ['$scope', '$route', function ($scope, $route) {
      var paramValue = $route.current.$$route.paramExample;
      console.log(paramValue); 
 }
2020-07-04