angular.module('basicFoodEditor', ['ngResource']) .factory('BasicFood', ['$resource', '$q', function($resource, $q) { return $resource('food/:id', {id: "@id"}, { 'get': {method: 'GET'}, 'query': { url: "food/query/:query/", method: 'GET', isArray: true }, 'save': {method: 'PUT'}, 'update': {method: 'POST'}, 'delete': {method: 'DELETE'} }); }]) // TODO: Only ever used with editBasicFood template. See if can auto link. .controller('BasicFoodEditorController', ['$scope', '$uibModalInstance', 'BasicFood', 'foodData', function($scope, $uibModalInstance, BasicFood, foodData) { if (foodData == null) { console.error("No food data to edit!"); return; } $scope.food = new BasicFood(foodData); $scope.submit = function(food) { food.$save($scope.close, function (err) { // TODO: Proper error handling console.error(err); }); }; $scope.delete = function(food) { food.$delete($scope.close, function (err) { // TODO: Proper error handling console.error(err); }); }; var submitFnName = foodData.id == null? "$save":"$update"; $scope.submit = function(food) { food[submitFnName]($scope.close, function (err) { // TODO: Proper error handling console.error(err); }); }; // TODO: // Will this controller ever be used non-modally? // Will it even work as a non-modal? $scope.close = $uibModalInstance != null? $uibModalInstance.close : null; $scope.dismiss = $uibModalInstance != null? $uibModalInstance.dismiss : null; }]);