2016-03-24 4 views
0

Можно ли перейти к следующему обработчику маршрута, если первый обработчик не удовлетворяет/не улавливает конкретную ситуацию?Следующий обратный вызов в магистральном маршрутизаторе

Это то, что вы можете достичь в Express (nodejs) с помощью метода next().

Представьте себе, что у вас есть такая конфигурация маршрутизатора:

routes: { 
    '*path': 'onPath', 
    '*notFound': 'onNotFound' 
}, 

onPath: function(path, next){ 
    if(path == 'something'){ 
     console.log('ok'); 
    } else { 
     next(); 
    } 
}, 

onNotFound: function(){ 
    console.log('KO'); 
} 

Я знаю, что я могу смешивать onPath и onNotFound методы, но я просто хочу, знаю, если это возможно. Благодаря!

+0

Почему бы не определить явный маршрут и обработать его тогда? Насколько мне известно, вам нужно будет свернуть свое решение, если хотите достичь этой функциональности. – fbynite

+2

Как просто перенаправление на notFound путь, когда условие не выполняется? –

ответ

0

Прежде всего, я не уверен, что вы можете иметь 2 пути в маршрутизаторе. Как узнает маршрутизатор, что использовать? Вот вариант. Удалить маршрут NotFound и вызвать метод непосредственно:

routes: { 
    '*path': 'onPath' 
}, 

onPath: function(path){ 
    if(path == 'something'){ 
     console.log('ok'); 
    } else { 
     this.onNotFound(path); 
    } 
}, 

onNotFound: function(path){ 
    console.log('KO'); 
} 

Или еще чище подход: вы можете бросить событие (во избежание слишком много событий уровня App, если вы можете это просто пример.)

App.trigger("pathNotFound", path); 

Где-то в вашем коде (опять же, возможно, не на уровне приложения), вам нужно будет слушать это событие:

App.listenTo("pathNotFound", function(){ 
       console.log('KO'); 
}); 

Это все примерно написано. Конечно, вам нужно будет адаптировать его к своему приложению.

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

  • Нет связанных вопросов^_^