2016-05-05 140 views
1

我有一个参数工作的路由,但后来添加了一些子路由,现在它不会更新。UI路由器stateParams不在子路由更新

事件模板

<a ui-sref="event.detail({id: event.id})" ng-repeat="event in events"> 
    Event {{event.id}} 
</a> 

UI路由器

.state('event', { 
    url: '/event', 
    views: { 
     'event': { 
      template: ..., // shown above 
      controller: 'Event' 
     } 
    } 
}) 
.state('event.detail', { 
    url: '/:id', 
    views: { 
     'event-detail': { 
      template: ..., 
      controller: 'EventDetail' // shows a single event 
     } 
    } 
}) 
// tabs to switch between the different details 
.state('event.detail.info', { 
    url: '/info', 
    views: { 
     'event-info': { 
      template: ... 
     } 
    } 
}) 
.state('event.detail.map', { 
    url: '/map', 
    views: { 
     'event-map': { 
      template: ... 
     } 
    } 
}) 
.state('event.detail.chat', { 
    url: '/chat', 
    views: { 
     'event-chat': { 
      template: ... 
     } 
    } 
}) 

控制器

function EventDetail($scope, $stateParams) { 
    $scope.getEventDetails = getEventDetails; 

    $scope.getEventDetails($stateParams.id); 

    function getEventDetails(id) { 
     console.log(id); // returns correct first time, then nothing. Used to work every time! 
     ... 
    } 
} 

通过运行什么错的:

  • 点击Event 1
  • 网址更改为event/1,并得到正确的事件细节
  • 回到列表,点击Event 2
  • 网址更改为event/2但显示事件细节1
  • 点击信息,地图或聊天标签,网址变更从event/2event/1/infoevent/1/mapevent/1/chat
+0

'event'状态有什么作用?是否显示任何东西? –

+0

是的,问题中的模板是由事件状态呈现的。它显示了所有事件的列表。 – barro32

+0

我认为这是发生了什么,ambigious路线。 Url:'event/detail/info'通过'event/detail /:id'和'event/detail/info'。所以它含糊不清。 –

回答

1

解决方案是用户cache: falseevent.detail状态及其子状态。