2012-07-12 58 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)。

將兩個聲明組合在一個文件中以提高性能也更好。

相關問題