【问题标题】:Getting AngularJS $route to redirect to a specific state让 AngularJS $route 重定向到特定状态
【发布时间】:2013-03-03 10:18:43
【问题描述】:

我希望用户能够链接到特定的查看状态。

当用户转到http://localhost:3000/resource/#!/1 时,我正在尝试将控制器路由到页面的特定状态

我的配置是:

   $routeProvider.when('/:memberId', {
      controller: 'MemberDetailsCtrl'
    });
   $locationProvider.html5Mode(false).hashPrefix('!');

我已经做了很多试验,在所有作用域生成完成之前,似乎 $route 是未定义的。这意味着我无法执行

$http.get('/resource/' + $route.current.params.memberId + '.json')

在控制器/服务中并通过检查路由参数来触发该特定状态。

我已经能够在我的控制器中使用正则表达式和$location.path() 来完成所有这些工作,但也许有更好的方法? (使用 ngView 不够灵活)

重要更新

现在有一个很棒的模块——ui-router,它比默认的 $routeProvider 更好地帮助管理路由、状态和视图。

【问题讨论】:

  • 尝试在你的控制器中注入$routeParams而不是$route,然后在你的get()调用中使用$routeParams.memberId
  • 我试过了,很遗憾,我得到了同样的结果。

标签: angularjs angularjs-routing angularjs-service


【解决方案1】:

为控制器内部的路由更改广播设置一个监视功能怎么样:

$scope.$on('$routeChangeSuccess', function() {
    $http.get('/resource/' + $scope.params.memberId +'.json').success(function (d) {$scope.jsresponse = d;});
  });

jsfiddle

【讨论】:

    猜你喜欢
    • 2014-11-18
    • 2015-07-17
    • 2017-11-01
    • 2018-07-04
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多