У меня возникли проблемы с попыткой перенаправления запросов POST с использованием Node.js, Express и углового. Я знаю, есть стандартный способ использования формы следующим образом:Перенаправление с Node.js и угловым
index.ejs
<!DOCTYPE html>
<html>
<head>
<title>Redirect Example</title>
</head>
<body>
<p>INDEX PAGE</p>
<form action="/redirect" method="post">
<button type="submit">CLICK</button>
</form>
</body>
</html>
test.ejs
<!DOCTYPE html>
<html>
<head>
<title>Redirect Example</title>
</head>
<body>
<p>YAY REDIRECTED</p>
</body>
</html>
app.js
var fs = require('fs');
var https = require('https');
var express = require('express');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
res.render('index');
});
app.post('/redirect', function(req, res){
res.redirect('/test');
});
app.get('/test', function(req, res) {
res.render('test');
});
var port = process.env.PORT || 1337;
app.listen(port, function(){
console.log('http://localhost:' + port + '/');
});
Этот метод автоматически перенаправляет страницу на «тестовый» маршрут, поскольку он использует форму для обработки запроса на отправку.
Однако при использовании углового подхода страница не будет автоматически перенаправляться. Как мне это сделать?
index.ejs
<!DOCTYPE html>
<html ng-app="project">
<head>
<title>Redirect Example</title>
<script src="/javascripts/jquery/jquery.js"></script>
<script src="/javascripts/angular/angular.js"></script>
<script src="/javascripts/angular/angular-route.js"></script>
<script src="/javascripts/main.js"></script>
</head>
<body ng-controller="MainController">
<button type="submit" ng-click="submit()">CLICK</button>
</body>
</html>
main.js
var app = angular.module('project', []);
app.controller('MainController', ['$scope', '$http', function ($scope, $http) {
$scope.submit = function() {
$http.post('/redirect');
}
}]);
теги
Спасибо Nesh, не могли бы вы привести краткий пример того, как я буду использовать его для кода, который у меня выше? – slim1801
Вместо фактической переадресации в 'res.redirect ('/ test')' Обычно я предпочитаю отправить код статуса, а затем выполнить действие в AngularJS – Nesh
Я согласен с Nesh. Угловое предназначено для работы в одиночку в своем модуле в качестве клиента, поэтому обрабатывайте перенаправление изнутри углового. Измените экспресс-конечную точку, чтобы вместо этого вернуть код состояния и использовать что-то вроде '$ window.location.href = value' для ** перенаправления из внутреннего обратного вызова функции $ http.post **. – SamuelN