Javascript ng单击后AngularJS重定向

Javascript ng单击后AngularJS重定向,javascript,node.js,angularjs,redirect,mongoose,Javascript,Node.js,Angularjs,Redirect,Mongoose,我有一个RESTAPI,可以从MongoDB数据库读取/保存数据。 我使用的应用程序检索表单并从中创建对象(作业),然后将其保存到数据库。在表单之后,我有一个按钮,点击事件触发控制器的保存功能,然后重定向到另一个url 一旦我点击按钮,我被告知作业已经很好地添加到了数据库中,但是应用程序被阻塞了,重定向从未被调用。然而,如果我重新加载我的应用程序,我可以看到新的“作业”已经很好地添加到数据库中。这有什么不对???谢谢 这是我的密码: html(jade)代码示例: 角度模块的控制器: funct

我有一个RESTAPI,可以从MongoDB数据库读取/保存数据。 我使用的应用程序检索表单并从中创建对象(作业),然后将其保存到数据库。在表单之后,我有一个按钮,点击事件触发控制器的保存功能,然后重定向到另一个url

一旦我点击按钮,我被告知作业已经很好地添加到了数据库中,但是应用程序被阻塞了,重定向从未被调用。然而,如果我重新加载我的应用程序,我可以看到新的“作业”已经很好地添加到数据库中。这有什么不对???谢谢

这是我的密码:

html(jade)代码示例:

角度模块的控制器:

function myJobOfferListCtrl($scope, $location, myJobs) {

    $scope.save = function() {
        var newJob = new myJobs($scope.job);
        newJob.$save(function(err) {
            if(err)
                console.log('Impossible to create new job');
            else {
                console.log('Ready to redirect');
                $location.path('/offers');
            }
        });     
    };    
}
var myApp = angular.module('appProfile', ['ngResource']);

myApp.factory('myJobs',['$resource', function($resource) {
    return $resource('/api/allMyPostedJobs',
            {},
            {
                save: {
                    method: 'POST'
                }   
            });
}]);
角度模块的配置:

function myJobOfferListCtrl($scope, $location, myJobs) {

    $scope.save = function() {
        var newJob = new myJobs($scope.job);
        newJob.$save(function(err) {
            if(err)
                console.log('Impossible to create new job');
            else {
                console.log('Ready to redirect');
                $location.path('/offers');
            }
        });     
    };    
}
var myApp = angular.module('appProfile', ['ngResource']);

myApp.factory('myJobs',['$resource', function($resource) {
    return $resource('/api/allMyPostedJobs',
            {},
            {
                save: {
                    method: 'POST'
                }   
            });
}]);
my nodejs应用程序中的路由:

app.post('/job', pass.ensureAuthenticated, jobOffers_routes.create);
最后是我的REST API的控制器:

exports.create = function(req, res) {
    var user = req.user;
    var job = new Job({ user: user, 
                        title: req.body.title,
                        description: req.body.description,
                        salary: req.body.salary,
                        dueDate: new Date(req.body.dueDate),
                        category: req.body.category});
    job.save(function(err) {
        if(err) {
            console.log(err);
            res.redirect('/home');
        } 
        else {
            console.log('New job for user: ' + user.username + " has been posted."); //<--- Message displayed in the log    
            //res.redirect('/offers'); //<---- triggered but never render
            res.send(JSON.stringify(job));
        }
    });
};
exports.create=函数(req,res){
var user=req.user;
var job=新作业({user:user,
标题:req.body.title,
描述:req.body.description,
工资:要求的身体工资,
dueDate:新日期(要求正文dueDate),
类别:req.body.category});
job.save(函数(err){
如果(错误){
控制台日志(err);
res.redirect('/home');
} 
否则{

console.log('user的新作业:'+user.username+“已发布”);//我终于找到了解决方案!问题出在屏幕后面18英寸的某个地方

我修改了angular应用程序控制器,如下所示:

$scope.save = function() {
        var newJob = new myJobs($scope.job);
        newJob.$save(function(job) {
            if(!job) {
                $log.log('Impossible to create new job');
            }
            else {
                $window.location.href = '/offers';
            }
        });
    };    
诀窍是,我的REST api将创建的作业作为json对象返回,我处理它就像处理错误一样!因此,每次我创建作业对象时,都会返回一个json对象,由于它不为null,日志消息被触发,我从未被重定向。
此外,我现在使用
$window.location.href
属性完全重新加载页面。

是对“作业”(vs api/allMyPostedJobs)的发布是否调用过endpoint?如果没有,那么我不确定您的代码是如何将任何内容保存到db的。是的,我在日志中有这样一个信息:用户XXX的新作业已发布。此外,当我重新启动服务器应用程序时,发布在db中…只是为了澄清,日志中没有显示可能在redi之前发生的消息“Ready to redirect”按$location.path()进行排序。