2014-03-25 41 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

通過