2016-05-05 88 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狀態及其子狀態。