在Angularjs中将$http转换为$resource

Converting from $http to $resource in Angularjs

本文关键字:resource 转换 http 中将 Angularjs      更新时间:2023-09-26
var customersApp = angular.module('customersApp', ['ngGrid']);
var url = 'api/Customer';
//the factory object for the webAPI call.
customersApp.factory('customerRepository', function ($http) {
    return {
        insertUser: function (callback,user) {
            var user = { "id": user.id, "city": user.city, "name": user.name, "address": user.address, "contactNo": user.contactNo, "emailId": user.emailId };
            $http.post(url, user).success(callback);
        }
});

控制器

customersApp.controller('customerCtrl', function ($scope, customerRepository) {
        customerRepository.insertUser(function () {
                alert('customer inserted successfully');
            }, $scope.New)
    });

我想做的是改变$http为$resource的工厂,像这样

customersApp.factory('customerRepository', function($resource){
return
 $resource(url, { id: '@id' }, { update: { method: 'POST', } })
}

我的问题是,当我从$http更改到$resource时,我把工厂insertUser中使用的"用户"数据放在哪里?

请让我知道在$资源在工厂我在哪里插入"用户"数据。由于

你可以这样做:

资源工厂创建对象并使用对象实例数据作为POST

customersApp.factory("customerRepository", function($resource) {
    return $resource("http://someUrl", {}, {
        update: {method : "POST"}
    });
});

在控制器

$scope.data = {}; // your data initialization stuff
$scope.data.someDataKey = 'someDataValue'; // add your default data
var customerrepository = new customerRepository($scope.data);
customerrepository.$update();

下面是一个例子

customersApp.controller('customerCtrl', function ($scope, $resource) {
    var customerRepository = $resource(url)
    customerRepository.save($scope.New, function () {
            alert('customer inserted successfully');
        })
});

这是使用$ resource的默认资源动作save,定义在这里

non-GET "class" actions: Resource.action([parameters], postData, [success], [error])
non-GET instance actions: instance.$action([parameters], [success], [error])

如果使用实例操作,则在使用new

创建资源时传递post数据。