2014-03-25 43 views
0
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到$的工厂资源这样

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

我的问题是,当我从$ http更改为$资源时,我在哪里放置使用工厂insertUser中的“用户”数据。

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

回答

0

你可以做这样的事情:

资源工厂创建的对象,并使用对象实例的数据作为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(); 
0

这里是一个例子

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

这是使用$种源的默认资源行动save,并定义为here

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

如果使用实例动作,POST数据创建资源时使用new

通过