我在不同的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
}
});
当我浏览#!receipts / 1时,正在实例化收据和发票。为什么这样,我该如何解决?
答案 0 :(得分:2)
你不会在CanJS文档中找到它,因为它是一个基本的javascript问题。
请注意,即使变量是在不同的脚本中声明的,它们包含在同一页面中的事实意味着它们都存在于同一个全局命名空间中,因此第二个Control对象声明会覆盖第一个。
最简单的答案是将每个Control对象分配给另一个变量(例如,Router1,Router2)。
您最好将两个声明组合在一个文件中以提高性能。