2014-01-26 51 views
0

有人可以幫助解釋何時在本例中使用字符串VS符號作爲名稱。在我的代碼我有我的控制器定義爲:鐵路路由器:什麼時候在this.route()中使用字符串VS符號作爲控制器名稱

PostShowController = RouteController.extend({ 
    template: 'userShow' 
}); 

//爲什麼會有差別,我的代碼只周圍PostShowController單引號工作,但望遠鏡使用符號方式: https://github.com/SachaG/Telescope/blob/master/lib/router.js

Router.map(function() { 

    // provide a String to evaluate later 
    this.route('postShow', { 
    path: '/:name', 
    controller: 'PostShowController' 
    }); 

    // provide the actual controller symbol if it's already defined 
    this.route('postShow', { 
    path: '/:name', 
    controller: PostShowController 
    }); 
}); 
+0

當你不使用引號時會得到什麼錯誤?它實際上應該沒有引號而不是與它們一起工作。 –

+0

瀏覽器控制檯顯示無法找到路徑以及我使用的路徑名。當「不使用引號」時,「Router.routes」也不顯示任何具有控制器的路由。 –

回答

1

正如它在例子中所說的(「稍後評估」),當你在「Router.map(...)」或其他文件中的某個地方定義控制器時,將使用該字符串。

考慮到Meteor以特定的順序加載文件,可以說你的文件來自路由器加載之前控制器定義,你會得到一個錯誤使用符號,因爲控制器不會被定義。

爲了避免出現錯誤,您應該在定義路由時使用字符串,並將控制器放在另一個文件中或在Router.map(...)之後。

+0

這就解釋了它,我的控制器與Router.map()是分開的文件,而Telescope的代碼全部在1個文件中。謝謝! –

+0

不客氣。樂意效勞。 – cassioscabral

相關問題