ng-click之后的AngularJSredirect
我有一个REST API读取/保存MongoDB数据库的数据。 我使用的应用程序检索表单并从中创build一个对象(作业),然后将其保存到数据库。 表单之后,我有一个button,点击事件触发我的控制器的保存function,然后redirect到另一个url。
一旦我点击button,我说这个工作已经被添加到数据库中,但是应用程序被卡住,redirect从不被调用。 但是,如果我重新加载我的应用程序,我可以看到新的“工作”已被很好地添加到数据库中。 这是怎么回事? 谢谢 !
这是我的代码:
示例html(翡翠)代码:
button.btn.btn-large.btn-primary(type='submit', ng:click="save()") Create
angular度模块的控制器:
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'); } }); }; }
angular度模块的configuration:
var myApp = angular.module('appProfile', ['ngResource']); myApp.factory('myJobs',['$resource', function($resource) { return $resource('/api/allMyPostedJobs', {}, { save: { method: 'POST' } }); }]);
在我的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)); } }); };
我终于find了解决scheme! 问题是在屏幕后面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将创build的作业作为json对象返回,而我正在处理它,就像是一个错误! 所以,每次创build一个job对象时,我都返回了一个json对象,因为它是非空的,所以日志消息被触发,我从来没有被redirect。 此外,我现在使用$window.location.href
属性来完全重新加载页面。
- 使用Node.js / Angular在Google电子表格JSON上进行跨源请求
- 使用mongolab,nodejs和express提高AngularJS web应用程序的响应时间
- 如何在angularjs中加载一个文本域
- 如何通过Express路由到多个Angular应用程序?
- 如何安装angular-ui-router.js文件,而不是从npm完整的源代码解决scheme?
- 简单的目录列表与node.js和angular.js,注意新的文件
- 隐藏/禁用字段从req.body消失(Express JS BodyParser)
- fs.writefile只能在节点js的最后一个函数中执行
- 在MEAN应用程序中处理路由的Express.js或angular?