Skip to content

Instantly share code, notes, and snippets.

@tonyeung
Forked from scottmcarthur/app.ts
Last active February 10, 2016 22:16
Show Gist options
  • Save tonyeung/67e136c5e1538ec53fd2 to your computer and use it in GitHub Desktop.
Save tonyeung/67e136c5e1538ec53fd2 to your computer and use it in GitHub Desktop.
How to use AngularJS ng.resource.IResource with TypeScript.
/// <reference path="angular.d.ts" />
/// <reference path="angular-resource.d.ts" />
interface IEmployee extends ng.resource.IResource<IEmployee>
{
id: number;
firstName : string;
lastName : string;
}
interface IEmployeeResource extends ng.resource.IResourceClass<IEmployee>
{
update(IEmployee) : IEmployee;
}
angular
.module('myapp', ['ngResource'])
.factory('EmployeeResource', ['$resourceService', ($resource : ng.resource.IResourceService) : IEmployeeResource => {
// Define your custom actions here as IActionDescriptor
var updateAction : ng.resource.IActionDescriptor = {
method: 'PUT',
isArray: false
};
// Return the resource, include your custom actions
return <IEmployeeResource> $resourceService('/api/employee/:id', { id: '@id' }, {
update: updateAction
});
}])
.controller('TestCtrl', ['EmployeeResource', (EmployeeResource : IEmployeeResource) =>
{
// Get all employees
var employees : Array<IEmployee> = EmployeeResource.query();
// Get specific employee, and change their last name
var employee : IEmployee = EmployeeResource.get({ id: 123 });
employee.lastName = 'Smith';
employee.$save();
// Custom action
var updatedEmployee : IEmployee = EmployeeResource.update({ id: 100, firstName: "John" });
}]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment