2016-02-11 28 views
0

我是angularJS的新手。 AngularJS通常適用於單頁面應用場景,我發現的大多數登錄示例都將index.html定義爲shell頁面,這意味着ng-view在index.html中定義。重定向主頁作爲shell頁面而不是indexJet頁面in angularJS

問題:在我的場景中,登錄頁面和索引頁面是相同的,即當您登錄到根登錄的login.html時,登錄成功後,您將訪問homepage.html。該主頁將具有徽標,頂部橫幅,左側導航和內容部分。不同的模板可以簡單地放置在內容部分中,其餘部分保持不變,從而給出不同的視圖,如儀表板視圖,查詢表單視圖,報表視圖等。因此,它更適合於將homepage.html作爲外殼頁面,因爲所有其他視圖將被嵌入在主頁中。

現在我該怎樣從登錄頁面重定向到是shell頁因爲按我的理解

<body ng-app></body> 

將使登錄頁面外殼頁,一旦login.html的是主頁shell頁面不能重新定義。

其他方式是有一個空白的外殼頁面,並具有整個登錄頁面作爲一個視圖和dashboard.html作爲另一個視圖和類似enquiry.html,reports.html和不同的模板。但這不是一個好方法,因爲我將不得不在每個模板中複製頂級橫幅,導航等代碼。這樣做會挫敗SPA的基本目的。

如何實現這一目標?這將是件好事,如果可能的話

回答

0

我想你應該重新考慮你如何建立你的index.html頁面

你的索引頁musn't是一個登錄頁面/主頁的虛擬實例。它必須是一個容器,它將根據當前路線包含它們中的每一個。

所以基本上一個索引頁會

<body ng-app="app"> 
    [an header maybe ?] 
    <div ng-view></div> 
    <script></script>//all script at end of page 
<body> 

然後定義路由會說的東西/登錄將匹配的login.html爲NG-視圖的內容。/home會匹配homepage.html。

未知路由將匹配/ login($ routerProvider.otherwise)。如果你的用戶已經連接,你的登錄頁面可以將他重定向到主頁。

在所有其他頁面上,如果用戶未連接,則將當前路線更改爲登錄路線。爲此,我們來看看事件$ routeChangeSuccess https://docs.angularjs.org/api/ngRoute/service/ $ route

+0

我明白你的意思,我必須爲登錄和另一條路線定義一條路線,但考慮到主頁會有很多頂級橫幅代碼,左側導航,頁腳,左上角的快速訪問欄等等,所有這些必須永久可用於所有其他視圖,如enquiry.html,reports.html等。我將不得不復制這些html。任何解決方案。目的是爲了避免代碼重複。 – RaghaveShukla

+1

將它放在包含某個div標籤的索引頁上,並在登錄頁面上隱藏它(隱藏)?這就是我爲我的應用程序 – Walfrat

+0

上的側面板所做的,你的意思是說,當我們有登錄視圖時,我應該隱藏常用組件,如頂部橫幅,左側導航等。是的,這可能是一種選擇。但是不可能以某種方式加載SPA環境以外的index.html/login.html,並且SPA路由只在登錄成功後纔會啓動 – RaghaveShukla