Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在CanJS中使用can.Control.route定义两个单独的路由器_Javascript_Canjs_Canjs Routing - Fatal编程技术网

Javascript 在CanJS中使用can.Control.route定义两个单独的路由器

Javascript 在CanJS中使用can.Control.route定义两个单独的路由器,javascript,canjs,canjs-routing,Javascript,Canjs,Canjs Routing,我在不同的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

我在不同的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正在实例化收据和发票。这是为什么?我如何修复它?

您在CanJS文档中找不到这一点,因为这是一个基本的javascript问题

请注意,即使变量是在不同的脚本中声明的,但它们包含在同一页面中这一事实意味着它们都位于同一全局命名空间中,因此第二个控件对象声明将覆盖第一个

最简单的答案是将每个控制对象分配给不同的变量(例如Router1、Router2)

最好将两个声明合并到一个文件中,以提高性能