2013-09-04 1 views
2

Есть ли общий способ (т. Е. В приложении-маршрутизаторе) прерывать переходы, если цель (включая динамические идентификаторы) соответствует текущему маршруту?ember.js: как прервать переходы, если цель совпадает с текущим путем

Я попытался подключиться к willTransition, но переход. Пакеты, которые я нашел, похоже, содержат текущие идентификаторы, и мне не с чем сравнивать.

+0

Просто чтобы быть любопытным, зачем это нужно? – mavilein

+0

@mavilein: У меня есть некоторые состояния на моих страницах, что приводит к анимации css и тому подобное. Из-за характера этого приложения пользователи будут вызывать URL-адрес, на котором они находятся, поэтому, прерывая, я хочу избежать сброса состояния анимации. – fwoeck

ответ

1

Атрибут перехода будет ссылаться Params текущего маршрута, а не целевой params. Вам нужно взглянуть на модели, предоставленные для перехода через свой атрибут providedModels. Ваш код должен выглядеть так:

willTransition: function(transition) { 
    if ((this.get('routeName') === transition.targetName) && 
     (this.get('currentModel') === transition.providedModels[transition.targetName])) { 
    transition.abort(); 
    return; 
    } 

    // ... other code here ... 
} 
+0

Благодарим вас за понимание, это прекрасно работает! – fwoeck

0

Я только что испытал это в своем приложении, и я думаю, что он делает то, что вы ищете. В основном вы проверяете job_id в параметрах против model.id вашего контроллера.

App.JobRoute = Ember.Route.extend({ 

    actions: { 
    willTransition: function(transition) { 
     if (this.controller.get('model.id') == transition.params.job_id) { 
     transition.abort(); 
     } 
    } 
    } 

}); 
+0

Yip, вот что я пробовал, но (по крайней мере, в моей среде) хеш params перехода содержит id-набор, где я сейчас, а не тот, на который указывает переход. Я буду проверять, чтобы убедиться, что это не вызвано моей настройкой. – fwoeck

+0

Я просто дважды проверил, и я получаю новую информацию (где я перехожу) в params 'willTransition'. –

+0

Спасибо за ваши усилия! Я прокомментирую, если я нахожу причину ситуации с моими параметрами. – fwoeck