AngularJS服务存储和更新数据

时间:2014-06-26 21:14:52

标签: angularjs angularjs-service

我有一个简单的应用程序,显示每个人都有一个编辑控制器链接的人员列表。编辑控制器通过id获取人员。提交编辑表单后,页面将重定向回人员列表。

我有一种方法可以在服务器保存人员后更新回调中的服务数据。我使用的方法实际上工作,但是,我不确定是否有更好的方法来实现这一点。经过多次搜索后,我还没有找到具体的答案,所以我想在这里寻求AngularJS社区的帮助。

这是一个小提琴:http://jsfiddle.net/7bGEG/

var app = angular.module('peopleApp',[]);

app.controller('ListCtrl',function($scope,People) {
    People.getList().then(function(response) {
        $scope.list = response; // show list of people with a link to new route to edit
    });
});

app.controller('EditCtrl',function($scope,$location,$routeParams,People) {
    // edit route so get person by id
    People.getById($routeParams.id).then(function(response) {
        $scope.person = response.person;
    });

    // submit save person form and send back to person list
    $scope.savePerson = function() {
        People.savePerson($scope.person).then(function(response) {
            $location.path('/');
        });
    }
});

app.factory('People',function($http,$q) {
    var people = [];
    var people_q = $q.defer();

    $http.get(url).then(function(response) {
        people = response.data;
        people_q.resolve(people);
    });

    return {
        getList: function() {
            return people_q.promise;
        },

        getById: function(id) {
            return $http.get(url).then(function(response) {
                return response.data;
            });
        },

        savePerson: function(person) {
            return $http.post(url).then(function(response) {
                // find person in person array and remove them
                for (i=0; i < people.length; i++) {
                    if (people[i].person_id == person.person_id) {
                        people.splice(i,1);
                        break;
                    }
                }
                // add new person data
                people.push(response.data);
                return response.data;
            });
        }
    }
});

0 个答案:

没有答案