2013-05-20 3 views
3

У меня есть проблема с угловыми JS, я создал login.html & home.html .. после успешного входа в систему, я хочу, чтобы изменить страницу home.html.маршрутизации Проблема в угловых и NodeJS [угловой]

моя маршрутизация не работает, URL по умолчанию является локальным/Угловой < - это дисплей login.html после регистрации изменений URL на локальных/доме, но он не будет дисплей home.html

я попытался разгромить " Realpath», который является локальным/угловым/видом/home.html, но до сих пор ничего хороших

моего папки & заказа файла

  • угловой (папка не держать угловой ОМТ)
  • приложения (папка держать 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'})); 
     } 
    }); 
}; 
+0

Вместо '$ location.path ('home'). Replace() вы могли бы просто написать' $ location.path ('/ angular/home') 'и проверить, работает ли он? – callmekatootie

ответ

4

User2401192,

Первые вещи сначала нужно объявить нг-представление в вашем HTML:

<div ng-view></div> 

Теперь, когда ваш templateUrl изменяется (например, вы выполняете $location.path('home').replace();),

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

ваш ng-view заменяется содержанием нового URL. В этом случае view/home.html.

Две вещей, которые я хотел бы добавить:

  1. Не используйте классический $ .ajax (..), использовать сервис $ HTTP, потому что он имеет хорошие преимущества сулят API, и чрезвычайно полезными http-перехватчиками (может показаться не очень много, но они есть - например, показ всплеска загрузки или перехват 403 несанкционированных запросов.
  2. Ничего :), на самом деле было только одно.
Смежные вопросы