2014-06-05 105 views
1

我有一個問題,我想知道什麼是最好的創建一個登錄頁面。AngularJS和登錄頁面

實際上,我創建了一個名爲/ login的ng-view根(在我的app.js中'when ... then')。

這種方法的問題是我必須使用ng-include將我的靜態HTML包含在其他文件中。 (我不需要這個靜態的HTML在我的登錄頁面,所以NG-的觀點是身體一前一後第一坊間行動。)

例如,我有我的index.html的身體,看起來像:

<body> 
    <div ng-view></div> 
</body> 

我的泛音登錄包含一個表單連接(簡單形式)(/登錄)

<form> 
    <input type="text" ng-model="login" placeholder="login"> 
    <input type="text" ng-model="password" placeholder="password"> 
</form> 

我的其他文件,如(/用戶/客戶/計費等)的樣子:

<div ng-include="partials/menu.html"></div> 
My custom content 
<div ng-include="partials/footer.html"></div> 

這是一個好方法嗎?還是它存在一個更好的?

謝謝大家。

+0

也許,你應該張貼在http://codereview.stackexchange.com/ – zishe

+0

看看角度,應用安全模塊,有一些很好的想法:https://github.com/ angular-app/angular-app/tree/master/client/src/common/security –

回答

0

而是放置ng-include S代表菜單和頁腳中的每一個部分(除login.html),你可以將它們放置在index.html並隱藏他們當你是/login頁面上進行如下:

在你index.html

<body ng-controller="MenuCtrl"> 
    <ng-include src="'partials/menu.html'"></ng-include> 
    <div ng-view></div> 
    <!-- same for footer as for menu --> 
</body> 

在你menu.html

<nav ng-hide="isActive('/login')"> 
    <!-- ...--> 
</nav> 

在新的控制器MenuCtrl

.controller('MenuCtrl', ['$scope', '$location', function($scope, $location) { 
    $scope.isActive = function (viewLocation) {    
     return viewLocation === $location.path(); 
    }; 
}]) 

你也可以用這個,完全不同的風格你的登錄頁面(例如,不同的背景顏色等),當你做這樣的事情在您的index.html:

<body ng-class="{MyLoginTheme: isActive('/login')}" ng-controller="MenuCtrl"> 
+0

這是實際的最佳解決方案嗎? – mfrachet