我一直在研究一個「非平凡」的角JS應用程序,我對自己和這個框架感到有點失望,因爲它沒有找到真正可行的解決方案,以解決以下問題。如何解決AngularJS中的以下陷阱
- AngularJS應該有一個機制,在運行之前,應該能夠執行HTTP請求以獲取數據並將其設置爲提供程序。 在實際引導應用程序之前,這對獲取路線權限,用戶數據以及所需的東西非常有用。
現在,我看到的文章描述瞭如何前角加載jQuery的,只是一些jQuery的Ajax調用後手動自舉角 - >和接收到的數據注入角。
- 應該有一箇中間件可以用來驗證根。在那裏,任何根在顯示之前,你可以做一個檢查,例如鉤,看看用戶通過認證,令牌存儲在會話存儲等功能
現在,我見過的嘗試與使用ui路由器和$rootScope.$on('$stateChangeStart')
事件。
這個「有些」的作品,但它不是優雅的,不是開箱即用,如果你不擺弄設置,它會觸發無限循環。
此外,UI路由器使用做出決議,其是在獲得資源的視圖編譯之前大。但是,會發生什麼,你不能從解析函數中獲得「$ state」。所以,如果你請求的數據不是你想要的,你不能重定向到另一個視圖。
Angular使得加載控制器和視圖的狀態非常複雜,這取決於某些數據 - 人工智能。用戶角色。 這不是真的要走的路,但在某些情況下,直接從路由器決定哪個控制器加載哪條路由器,而不是在視圖中使用模板將會很有用。
這篇文章背後的原因是看你們如何解決這些問題。
我希望你證明我錯了,有很多更好的方法來完成上述操作,並且通過代碼示例,我很想知道它們。
對於第1點。如果您在加載頁面之前需要一些數據,可以先設置一個解析完成:http://stackoverflow.com/questions/14741359/angularjs-dependency-injection-in-resolve – SoluableNonagon 2014-11-06 21:15:35
精英,這將是很好的角度完成配置應用程序之前得到一個http請求...爲了獲取用戶的語言環境,api網址等。 – 2014-11-06 21:17:30
這將更好地分成單獨的問題。 – 2014-11-06 21:19:55