Ionic login簡單登錄頁面


1.login.html

 1 <ion-view view-title="登錄" hide-nav-bar="true">
 2     <div class="bar bar-header  bar-positive ">
 3         <h1 class="title">登錄</h1>
 4         <button class="button button-clear" ng-click="registerclick()">注冊</button>
 5     </div>
 6     <div class="bar bar-subheader">
 7         <ion-scroll direction="x" scrollbar-x="false" overflow-scroll="true" style="overflow: hidden">
 8             <div class="button-bar sub_header_list">
 9                 <a class="button button-clear {{isgeneralCss}}" ng-click="changeModel(0)">普通登錄</a>
10                 <a class="button button-clear {{isfastCss}}" ng-click="changeModel(1)">快捷登錄</a>
11             </div>
12         </ion-scroll>
13     </div>
14     <ion-content class="has-subheader">
15 
16         <form name="myForm" ng-show="isloginModel" ng-submit="signIn()">
17             <div class="list list-inset removePM">
18                 <label class="item item-input">
19                     <span class="input-label ion-android-people">&nbsp;&nbsp;用戶名</span>
20                     <input type="text" name="txtUserName" placeholder="請輸入用戶名" ng-model="user.username" required>
21                 </label>
22                 <label class="item item-input">
23                     <span class="input-label ion-android-lock">&nbsp;&nbsp;密碼</span>
24                     <input type="password" name="txtPwd" placeholder="請輸入密碼" ng-model="user.password" required>
25                 </label>
26             </div>
27             <div class="row list-borderless">
28                 <div class="col col-67"><ion-checkbox ng-model="user.isChecked">是否記住密碼</ion-checkbox> </div>
29                 <div class="col col-center"><a href="#">忘記密碼?</a></div>
30             </div>
31 
32             <div class="padding">
33                 <button class="button button-block button-positive" type="submit" ng-disabled=" myForm.txtUserName.$invalid || myForm.txtPwd.$invalid">
34                     <b>登&nbsp;&nbsp;錄</b>
35                 </button>
36             </div>
37         </form>
38 
39         <form name="myfastForm" ng-show="!isloginModel" ng-submit="signIn()">
40             <div class="list list-inset removePM">
41                 <label class="item item-input">
42                     <span class="input-label ion-android-people">&nbsp;&nbsp;手機號</span>
43                     <input type="text" name="txtphone" placeholder="請輸入手機號" ng-model="user.phone" required>
44                 </label>
45                 <label class="item  item-input">
46                     <span class="input-label ion-android-lock">&nbsp;&nbsp;驗證碼</span>
47                     <input type="text" name="txtvercode" style="flex:120px;" placeholder="請輸入驗證碼" ng-model="user.vercode" required>
48                     <button class="button" style="font-size:12px; color:red;">獲取驗證碼</button>
49                 </label>
50             </div>
51 
52             <div class="padding">
53                 <button class="button button-block button-positive"  ng-disabled="myfastForm.txtphone.$invalid || myfastForm.txtvercode.$invalid">
54                     <b>登&nbsp;&nbsp;錄</b>
55                 </button>
56             </div>
57             <div class="padding com">
58                 <span class="positive">點擊登錄表明你已同意並閱讀<a style="color:red; " href="#">《快捷登錄條款》</a></span>
59             </div>
60         </form>
61     </ion-content>
62 </ion-view>

2.controller.js

 1   //用戶登錄
 2   .controller('LoginCtrl', function ($scope, $state, $ionicLoading, userFactory, Storage) {
 3 
 4         $scope.user = {
 5             username: "",
 6             password:  "",
 7             isChecked: false,
 8             phone: '',
 9             vercode:''
10         }
11         $scope.$on('$stateChangeSuccess', function () {
12             if (Storage.get("loginInfo") != null) {
13                 $scope.user.username = Storage.get("loginInfo").username;
14                 $scope.user.password = Storage.get("loginInfo").password;
15                 $scope.user.isChecked = Storage.get("loginInfo").isChecked;
16             }
17             else {
18                 $scope.user.username = "";
19                 $scope.user.password = "";
20                 $scope.user.isChecked = false;
21             }
22         });
23        
24         //登錄
25         $scope.signIn = function () {
26 
27             userFactory.login($scope.user.username, $scope.user.password);
28         }
29         
30         $scope.$on('User.loginUpdated', function () {
31             console.log("User.loginUpdated");
32             var userRel = userFactory.getCurrentUser();
33             console.log(userRel);
34             if (userRel.status != "1") {//登陸失敗
35                 $ionicLoading.show({
36                     noBackdrop: true,
37                     template: userRel.msg,
38                     duration: 1500
39                 });
40             } else {
41                 if ($scope.user.isChecked) {
42                     Storage.set("loginInfo", $scope.user);
43                 } else {
44                     Storage.remove("loginInfo");
45                 }
46                 $state.go('app.user');  //路由跳轉
47                 
48             }
49         });
50 
51         //登錄切換
52         $scope.isloginModel = true;
53         $scope.isgeneralCss = "sub_button_select";
54         $scope.isfastCss = "";
55         $scope.changeModel = function (lm) {
56            
57             if (lm == 0) {
58                 $scope.isgeneralCss = "sub_button_select";
59                 $scope.isloginModel = true;
60                 $scope.isfastCss = "";
61             }
62             if (lm == 1) {
63              
64                 $scope.isgeneralCss = "";
65                 $scope.isfastCss = "sub_button_select";
66                 $scope.isloginModel = false;
67             }
68         }
69         $scope.registerclick = function () {
70             $state.go("register");
71         }
72   })

3.services.js

 .factory('userFactory', function ($resource, $rootScope, ENV, Storage, $http, $q) {
        var user = {}; //返回用戶對象
       
        return {
            //登錄
            login: function (username, password) {
                $http.get("http://192.168.0.109:8004/api/" + "/Login/Loging", { params: { UserName: username, Password: password} })
             .success(function (response) {
                 console.log("Loging調用成功")
                 var json = eval('(' + response + ")");
                 user = json;
                 console.log(json.userInfo);
                 
                 if (json.status == "1") {
                     Storage.set("UserKey", json.userInfo);
                 }
                 $rootScope.$broadcast('User.loginUpdated');
             }).error(function (err, status) {
                 $ionicLoading.show({
                     noBackdrop: true,
                     template: err,
                     duration: 1500
                 });
             });
            },
             getCurrentUser: function () {
                return user;
            }
        };
    })
    .factory('Storage', function ($state, ENV, $http, $rootScope) {
        var version = "";
        return {
            set: function (key, data) {
                return window.localStorage.setItem(key, window.JSON.stringify(data));
            },
            get: function (key) {

                return window.JSON.parse(window.localStorage.getItem(key));
            },
            remove: function (key) {
                return window.localStorage.removeItem(key);
            }
        };
    })

css:

.bar .sub_header_list .button.button-clear{

border-bottom: 1px solid #eee;
}
.sub_header_list{
width: 100%;
}
.sub_header_list .button{
width: 50%;
color:#666;
}
.bar .sub_header_list .button.sub_button_select{
border-bottom:2px solid #387ef5;
position:relative;
}
.bar-subheader{
border-bottom: none;
}

效果圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM