首先定義您的模型,將描述您的員工的界面。
// Define an interface of the object you want to use, providing it's properties
interface IEmployee extends ng.resource.IResource<IEmployee>
{
id: number;
firstName : string;
lastName : string;
}
然後創建一個接口,描述您將創建的資源。
// Define your resource, adding the signature of the custom actions
interface IEmployeeResource extends ng.resource.IResourceClass<IEmployee>
{
update(IEmployee) : IEmployee;
}
創建EmployeeResource
工廠:
var myApp = angular.module('myApp', ['ngResource']).factory('EmployeeResource',
['$resource', ($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> $resource('/api/employee/:id', { id: '@id' }, {
update: updateAction
});
}]);
注入你EmployeeResource
到控制器:
myApp.controller('TestCtrl', ['$scope', 'EmployeeResource', ($scope, Employee : IEmployeeResource) =>
{
// Get all employees
var employees : Array<IEmployee> = Employee.query();
// Get specific employee, and change their last name
var employee : IEmployee = Employee.get({ id: 123 });
employee.lastName = 'Smith';
employee.$save();
// Custom action
var updatedEmployee : IEmployee = Employee.update({ id: 100, firstName: "John" });
}]);
創建一個新員工的實例:
ÿ您可以通過new
工廠創建IEmployee
類型的實例。
myApp.controller('TestCtrl', ['$scope', 'EmployeeResource', ($scope, Employee : IEmployeeResource) =>
{
var myEmployee : IEmployee = new Employee({ firstName: "John", lastName: "Smith"});
myEmployee.$save();
}
因此,在上述情況中,我們注入我們的IEmployeeResource
爲Employee
。那麼我們可以用new
這個對象來創建一個IEmployee
。
請讓我知道我的答案是否有幫助,或者如果您仍然留在評論中。謝謝。 – Scott
在AngularJS DefinitelyTyped頁面上,有一些非常有用的關於$資源使用情況的TypeScript文檔 - https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/angularjs –