2014-01-29 2 views
0

У меня есть два пути с различными хэш и тем же моделью представления:Получить активный маршрут хэш в методе АКТИВИРУЙТЕ

var routes = [ 
    { route: '', moduleId: 'home', title: 'Home', nav: 1 }, 
    { route: 'details(/:id)', moduleId: 'details', title: 'Details', nav: 2, hash: '#details' }, 
    { route: 'access_token=*token', moduleId: 'details', title: 'Details', nav: false, hash: "#access_token=" }]; 

Как я могу обнаружить, как я пришел к деталям просмотр модели в activate методы деталей просмотр модели? Я попытался перебрать массив router.routes и найти маршрут с помощью isActive() == true, но это не доступно, пока функция активации не возвращает результат.

Кроме того, если добавить детектирование активного маршрута в binding метода модели представления, я получаю оба маршрута активен, независимо от того, который был применен по маршруту:

function binding() { 

    router.routes.forEach(function (route) { 
     console.log('Route ' + route.hash + " isActive:" + route.isActive()); 
    }); 
} 

консоль журнал:

Route # isActive:false details.js:37 
Route #details isActive:true details.js:37 
Route #access_token= isActive:true 
+1

Чтобы уточнить, что вы пытаетесь найти предыдущий маршрут или маршрут, на который вы переходите? Вы посмотрели на activeInstruction? –

+0

@PWKад большое спасибо! Это именно то, что я ищу. –

ответ

3

Взгляните на активное свойство маршрутизатора. -

router.activeInstruction(); 

Вы можете подписаться на него или создать для него расчет, чтобы отслеживать изменения маршрута.

+0

, в частности, 'router.activeInstruction(). Фрагмент 'доставит вам полный маршрут durandal. – SFlagg

Смежные вопросы