2013-10-20 159 views
0

工作,我很新的Ember.js,我下面這個教程nettuts+Ember.js路徑只能用「應用程序/#/路徑」,而不是「應用程序/路徑」

我有一個在Ember.js中路由問題。

創建我的路線如下:

App.Router.map(function() { 

    this.resource('index', { path: '/' }); 
    this.resource('gallery'); 

}); 

而且我的模板如下:

<script type="text/x-handlebars" data-template-name="gallery"> 
    <h2>This is the gallery</h2> 
</script> 

而且我的鏈接如下:

<nav> 
    {{#linkTo "index"}}Home{{/linkTo}} 
    {{#linkTo "gallery"}}Gallery{{/linkTo}} 
</nav> 

當我想訪問「圖庫」路徑通過點擊鏈接,它工作正常,更新網址爲:/ember-app/#/gallery但按照教程,url路徑:/ember-app/gallery也應該呈現適當的模板。

但它並沒有給我一個404錯誤。

我很想了解如何不/#/path,只是/path

我是不是做錯了創建路徑?

回答

1

你必須告訴Ember你想使用history api。

App.Router.reopen({ 
    location: 'history' 
}); 

http://emberjs.com/guides/routing/specifying-the-location-api/

+1

你要知道這是支持取決於用戶的瀏覽器支持pushState的。如果您需要支持更多瀏覽器,請參閱以下內容:http://stackoverflow.com/questions/15056877/does-ember-routing-fall-back-to-using-a-hash-if-browser-doesnt-support-the -hist – digitalpixelpro

+0

另一件需要考慮的事情是你的服務器需要能夠爲該應用程序服務器的任何路由(例如,某些類型的'/ ember-app /#/ gallery'服務器將爲'/ ember-app /'服務,但是如果有人請求'/ ember-app/gallery',你需要你的服務器也能夠響應它 –