在angularjs中保存对象的响应

Save response to object in angularjs

本文关键字:响应 对象 保存 angularjs      更新时间:2023-09-26

我有一个页面,通过ng-repeat和ng-model显示表和数据。当我单击保存按钮时,我调用post服务,并将我的数据发布到数据库,并在回调中返回我的id。如何保存对对象的响应?

在控制器:

$scope.saveTask = function (workflow) {
    if (workflow.isSaved == false) {
        workflow.isSaved = true;
        $scope.Task.push($scope.newTask());
        restService.postArbitraryTask(angular.toJson(workflow));
    }
};
在rest服务:

postArbitraryTask: function (model, callback) {
    $http({
        method: 'POST',
        url: Global.api.saveArbitraryTask,
        contentType: 'application/json; charset=utf-8',
        data: model
    }).success(function (response) {
        console.log(response);
        if (callback) {
            callback(response);
        }
    }).error(function() {});
},

postArbitraryTask函数接受一个回调,该回调将传递响应。

使用它:

restService.postArbitraryTask(
    angular.toJson(workflow),
    function(response){
        $scope.myObject = response;
    }
);

同样,而不是:

if (workflow.isSaved == false) {

你可以使用:

if (!workflow.isSaved) {

您的postArbitraryTask接受回调并传递响应给它

postArbitraryTask: function (model, callback) {
    $http({
        method: 'POST',
        url: Global.api.saveArbitraryTask,
        contentType: 'application/json; charset=utf-8',
        data: model
    }).success(function (response) {
        console.log(response);
        if (callback) {
            callback(response);
        }
    }).error(function() {});
},

你可以修改你的saveTask函数来使用从服务器返回的任何数据。

$scope.saveTask = function (workflow) {
    if (workflow.isSaved == false) {
        $scope.Task.push($scope.newTask());
        restService.postArbitraryTask(angular.toJson(workflow),
           function(response){
              workflow.isSaved = true;
              workflow.id = response.id;
           }
        );
    }
};

你可以进一步修改你的代码来处理错误(也不赞成成功和错误):

postArbitraryTask: function (model, callback) {
    $http({
        method: 'POST',
        url: Global.api.saveArbitraryTask,
        contentType: 'application/json; charset=utf-8',
        data: model
    }).then(function (response) {
        console.log(response);
        if (callback) {
            callback(false,response);
        }
    },function(response) {
        callback(true,response);
    });
},

修改你的回调来接受错误

$scope.saveTask = function (workflow) {
    if (workflow.isSaved == false) {
        $scope.Task.push($scope.newTask());
        restService.postArbitraryTask(angular.toJson(workflow),
           function(error,response){
              if(!error){ 
                  workflow.isSaved = true;
                  workflow.id = response.data.id;
              }
              else{
                  //handle error here(display an alert?) if an error occurs or server responds with an error code such as 404 or 500
              }
           }
        );
    }
};