3

angular jsに問題があり、login.htmlとhome.htmlを作成しました。ログインに成功した後、ページをhome.htmlに変更したいと思います。

デフォルトの URL は localhost/angular です <- ログイン後に login.html が表示され、URL が localhost/home に変更されますが、home.html は表示されません

私はlocalhost/angular/view/home.htmlである「リアルパス」をルーティングしようとしましたが、それでもうまくいきません

私のフォルダとファイルの順序

  • angular(角度ライブラリを保持するフォルダ)
  • app (app.js をルーティングするためのフォルダー)
  • ビュー(フォルダは私のhome.htmlを保持)
  • login.html (私のインデックスとして)
  • server.js (私のサーバーとしての node.js)
  • user_auth.js (ログイン用関数)

login.html の私のコード

<html ng-app="myApp" >
<head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

    <script src="angular-1.0.6/angular.js"></script>
    <script src="app/js/app.js"></script>

</head>
<title>Desainku</title>
<body>
<h2>Login</h2>

        <div  ng-controller="ajaxCtrl" >

           <p>
                <label>Username:</label>
                <input type="text" name="username" ng-model="username" />
            </p>
            <p>
                <label>Password:</label>
                <input type="password" name="password" ng-model="password" />
            </p>

            <input type="submit" value="submit" ng-click="submitPost()" />   
        <p>{{result}}</p>

</div>
</body></html>

app.js (ルーティングおよび送信サーバー) の私のコード

var app = angular.module('myApp', []);
app.config(['$routeProvider','$locationProvider',function($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(true);
    $routeProvider.when('/angular/home', {
        templateUrl: 'view/home.html',
        controller : 'homeCtrl'
    });
}]);
function homeCtrl($scope){
    alert('someone call me');
}
app.controller('ajaxCtrl', function($scope, $location) {
    var url = "http://localhost:7788/login";
    $scope.submitPost = function() {
        $.ajax({
            url: url,
            type: 'POST',
            dataType: 'json',
            data: {username: $scope.username, password: $scope.password},
            success: function(data) {
                $scope.$apply(function(){
                $scope.result=data.message;
                    if (data.status === 'true') {
                        alert($location.path());
                        $location.path('home').replace();
                }
                });
           },
            error: function(data) {
                alert('Error get data from server');
            }
        });
    };
});'

server.js と user_auth.js の私のコード

------------server
    var express     = require ('express'),
        app         = new express(), 
        calldb      = require ("./user_auth.js"),
        fs          = require('fs');
    app.post('/login',calldb.login);

------------user_auth

exports.login = function(req, res) {
    connDB.check_user(req.body, function(err) {
        console.log(req.header);
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "Content-Type,X-Requested-With");
        if (err) {
            res.send(JSON.stringify({status: 'false', message: 'Error login'}));

        } else {
            res.send(JSON.stringify({status: 'true', message: 'Succesfull login'}));
        }
    });
};
4

2 に答える 2

4

ユーザー2401192、

まず、html で ng-view を宣言する必要があります。

    <div ng-view></div>

templateUrl が変更されると (例: 実行$location.path('home').replace();)、

$routeProvider.when('/angular/home', {
    templateUrl: 'view/home.html',
    controller : 'homeCtrl'
});

yourng-viewは、新しい URL のコンテンツに置き換えられます。この場合view/home.html

追加したい2つのこと:

  1. 従来の $.ajax(..) を使用しないでください。$http サービスを使用してください。これには、Promise API の優れた利点と、非常に便利な http インターセプター (あまり聞こえないかもしれませんが、読み込み中のスプラッシュを表示するなど) があるためです。または 403 Unauthorized リクエストを傍受します。
  2. 何もありません:)、実際には1つだけありました。
于 2013-06-01T18:52:59.210 に答える
0

app.js コードを置き換える

var app = angular.module('myApp', []);
app.config(['$routeProvider','$locationProvider',function($routeProvider, $locationProvider) {
  $locationProvider.html5Mode(true);
  $routeProvider.when('/angular/home', {
    templateUrl: 'view/home.html',
    controller : 'homeCtrl'
  });
}]);
function homeCtrl($scope){
  alert('someone call me');
}
app.controller('ajaxCtrl', function($scope, $window) {
  var url = "http://localhost:7788/login";
  $scope.submitPost = function() {
    $.ajax({
      url: url,
      type: 'POST',
      dataType: 'json',
      data: {username: $scope.username, password: $scope.password},
      success: function(data) {
        $scope.$apply(function(){
        $scope.result=data.message;
          if (data.status === 'true') {
            alert($location.path());
            //$location.path('home').replace();
            return $window.location.href = 'home.html';
           }
        });
      },
   error: function(data) {
     alert('Error get data from server');
   }
  });
 };
});

私はそれが働いていることを試してみます。

于 2019-06-26T07:22:40.630 に答える