2013-11-22 38 views
3

在在emberjs.com路由的文件,它規定Ember.js URL如何表示每個可能的路由器狀態?

當前登錄的用戶?他們是管理員用戶嗎?他們看什麼職位?設置屏幕是否打開?他們正在編輯當前的帖子嗎? 在Ember.js中,您的應用程序中的每個可能狀態都由URL表示。

我似乎無法理解:應該如何處理上述狀態的每一個可能都由URL表示?

說明:

據我所看到的,灰燼路由器是一種嚴格的分層樹結構。對於我來說,對於直接的網址來說,這非常合適。

user/:user_id/posts/:post_id/comments

這對於單篇文章的評論的定位。

現在,用戶的登錄狀態在哪裏?這不會爲同一資源創建多個URL,還是這不重要?

如果您的設置屏幕是可以從網站的任何位置訪問的模式,那麼該如何反映在網址中?

我並不是要求解決方法,而只是想了解一下這些指南中的實際含義或最佳實踐。

回答

1

偉大的問題康拉德。

我會從我在Ember中完成的多個項目中提供一些經驗。

  1. 很少做我將用戶添加到路由,還有你是不是會被向下發送任何東西,但登錄的用戶的電流(當然,除非你正在構建一個管理資源)的好機會。因此,在url中定義用戶標識可能是不正確的,因爲它沒有定義當前頁面,它定義了正在查看當前頁面的用戶。

  2. 登錄狀態將與其他資源路由無關。它將住在根,並且在登錄後您將重定向到授權路線。如果有人直接導航到授權路線,那麼有一些好的模式可以暫停轉換,導航到登錄路線,然後在有效登錄重定向到授權路線時。

  3. 通常,您擁有單個資源的多個路由。

    App.Router.map(function() { 
        this.resource('login'); 
        this.resource('post', { path: '/post/:post_id' }, function() { 
        this.route('edit'); 
        this.route('someViewWithTheSameResource'); 
        this.route('someViewWithTheSameResource2'); 
        this.resource('comments', function() { 
         this.route('new'); 
         this.route('update'); 
        }); 
        }); 
    }); 
    
  4. 大爸爸的問題是模態。最初這只是一個不處理它在url中,沒有好辦法來處理這個,而不必在不同的設置下添加一百萬條路線。隨着查詢參數即將發生的變化,您可以修改根級的設置,而不必整理整個資源樹。這仍然處於測試階段,所以它可能不像預期的那樣工作,但目標是能夠處理這樣的用例。

http://emberjs.com/guides/routing/query-params/