【问题标题】:Perform controller action on state change对状态更改执行控制器操作
【发布时间】:2015-10-07 19:35:06
【问题描述】:

我有一个状态 course.show.events 的事件列表。我想要一个子状态,即 course.show.events.event 状态,它实际上是 course.show.events 状态(相同的控制器和视图),加载了执行一些控制器功能(如 selectEvent(day))。

相关状态为:

.state 'courses.show.events',
  url: '/events?month'
  controller: 'CourseEventsCtrl as vm'
  templateUrl: 'courses/events/events'
  resolve: { pagination: EventsPaginationResolver }

.state 'courses.show.events.event',
  url: '/:day'

我想访问CourseEventsCtrl 上的:day 参数并根据它是否可用执行一些操作,但$stateParams 仅显示来自course.show.events 状态的参数,而不是子@987654330 @参数。

【问题讨论】:

  • 不知道最后一句话是什么意思,具体问题是什么......the way I'd like to 像泥巴一样清晰
  • 我已经编辑了最后一部分,如果还不清楚我的意思,请告诉我。
  • 发布一些代码...no access to controller 也不是很清楚。更高级别的目标也可以使用更好的描述
  • 我已经更新了相关州的问题,@charlietfl。
  • 无法访问$stateParams 意味着您的代码存在问题。以这种速度,这将一事无成。您需要发布所有相关代码

标签: angularjs angular-ui-router


【解决方案1】:

如果我理解您的要求,您想从 www.example.com/calendar 转到 www.example.com/calendar/monday。您可以使用url = '/calender/:day' 创建一个状态,然后在您的控制器中从$routeParams$stateParams 访问它,如果您使用的是ui.router

https://docs.angularjs.org/api/ngRoute/service/$routeParams

【讨论】:

  • 嘿,我已经更新了问题。我似乎无法访问与子状态相关的$stateParams
  • 就像@charlietfl 所说,没有相关代码,我们无能为力。您的子控制器是什么样的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 2011-01-02
相关资源
最近更新 更多