AngularJS-防止表单清除
提交带有ng submit=“createNewOrder()”的表单时,我将调用一个执行服务器端验证的资源服务。但是,表单字段在服务返回后被清除。如何防止Angular在资源服务返回表示成功的响应之前清除字段 编辑:添加代码 HTML: 控制器:AngularJS-防止表单清除,angularjs,Angularjs,提交带有ng submit=“createNewOrder()”的表单时,我将调用一个执行服务器端验证的资源服务。但是,表单字段在服务返回后被清除。如何防止Angular在资源服务返回表示成功的响应之前清除字段 编辑:添加代码 HTML: 控制器: app.controller('OrdersController', function ($scope, Order) { $scope.newOrder = new Order({ }); $scope.createNewOrder = f
app.controller('OrdersController', function ($scope, Order) {
$scope.newOrder = new Order({ });
$scope.createNewOrder = function () {
$scope.newOrder.$create(
function(successData) {
if (successData.error) return alert('order was not saved successfully');
alert('order successfully charged and created');
},
function(errorData) {
alert('order was not saved successfully: ' + JSON.stringify(errorData));
}
);
};
});
服务:
angular.module('orderServices', ['ngResource']).
factory('Order', function ($resource) {
return $resource('/admin/json/orders', {},
{
query: { method: 'GET', params: { }, isArray: true },
create: { method: 'POST', params: { } },
save: { method: 'PUT', params: { } }
});
});
我想你是在提交表格。与其这样做,不如调用ajax将数据发送到服务器。我认为它会起作用。我的问题是我打电话:
$scope.newOrder.$create(...)
这将导致$scope.newOrder对象被资源服务的create方法返回的JSON对象覆盖。这将清除所有表单字段,因为返回了一个错误对象
将此更改为:
Order.create($scope.newOrder, ...)
解决了这个问题
我还可以更改资源服务以返回非200 HTTP状态码,我相信我的对象不会被覆盖
希望这能帮助任何有类似问题的人。编写代码,我也有一个表单,但没有明确的内容,所以可能是代码中有错误。看到这个答案吗?它说没有创建方法,只有保存。这对我来说太完美了!非常感谢。
$scope.newOrder.$create(...)
Order.create($scope.newOrder, ...)