3

我在不同的 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 时,Receipts 和 Invoices 都被实例化了。为什么会这样,我该如何解决?

4

1 回答 1

2

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

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

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

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

于 2012-12-20T11:26:19.880 回答