2012-07-12 49 views
3

虽然两者都包含在同一个HTML文件中,但我在不同的JS文档中定义了两条路由。 1号线是这样的:在CanJS中使用can.Control.route定义两个单独的路由器

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两个收据和发票被实例化。为什么是这样的,我该如何解决它?

回答

2

你不会在CanJS文档中找到它,因为它是一个基本的javascript问题。

请注意,尽管变量是在不同的脚本中声明的,但它们包含在同一个页面中的事实意味着它们都位于同一个全局名称空间中,因此第二个控制对象声明会覆盖第一个。

最简单的答案是将每个Control对象分配给一个不同的变量(例如Router1,Router2)。

将两个声明组合在一个文件中以提高性能也更好。

相关问题