Определение двух отдельных маршрутизаторов с помощью can.Control.route в CanJS
У меня есть два маршрута, определенные в разных JS-документах, хотя оба включены в один и тот же HTML-файл. Маршрут 1 выглядит так:
Router = can.Control({
"invoices/:id route": function(data){
//load an invoice by id
}
});
А другой такой:
Router = can.Control({
"receipts/:id route": function(data){
//load a receipt by id
}
});
Когда я перехожу к #! Квитанциям /1, создаются квитанции и счета. Почему это и как я могу это исправить?
1 ответ
Вы не найдете этого в документации CanJS, потому что это основная проблема с JavaScript.
Обратите внимание, что хотя переменные объявлены в разных сценариях, тот факт, что они включены в одну и ту же страницу, означает, что они оба находятся в одном и том же глобальном пространстве имен, поэтому второе объявление объекта Control перезаписывает первое.
Самый простой ответ - назначить каждому объекту управления отдельную переменную (например, Router1, Router2).
Вам также было бы лучше объединить обе декларации в одном файле для повышения производительности.