Определение двух отдельных маршрутизаторов с помощью 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).

Вам также было бы лучше объединить обе декларации в одном файле для повышения производительности.

Другие вопросы по тегам