Работих с фантастичния пакет Iron-Router (0.7.1) за Meteor (0.8.1.3) и попаднах на нещо, което изглежда донякъде контраинтуитивно. Дадох пример по-долу.
Следният код е написан в контекста на предоставените от Iron-Router Tinytests. https://github.com/EventedMind/iron-router/blob/devel/test/both/route_controller.js
var Parent = RouteController.extend({
onBeforeAction: function(pause) {
console.log('I\'m in the parent!');
pause();
}
});
var Child = Parent.extend({
onBeforeAction: function(pause) {
console.log('I\'m in the child!');
pause();
}
});
var inst = new Child(Router, route, {});
inst.runHooks('onBeforeAction');
Тестът доведе до това, че Детето отпечата „Аз съм в родителя“, очаквах Детето да отпечата „Аз съм в детето“
Чувствам, че с обектно-ориентираното програмиране би било по-естествено onBeforeAction на Child да замени този на Parent.
Като се има предвид това, ако това е умишлено, как мога да подкопая реда на куките и да се изпълнява само onBeforeAction на детето?