我就是这样做的。这样,您不必为每个端点编写自定义资源函数,只需将其添加到列表资源列表中即可。我定义了一个我想像这样使用的端点列表。
var constants = {
"serverAddress": "foobar.com/",
"resources": {
"Foo": {
"endpoint": "foo"
},
"Bar": {
"endpoint": "bar"
}
}
}
然后像这样从每个人中创建资源。
var service = angular.module('app.services', ['ngResource']);
var resourceObjects = constants.resources;
for (var resourceName in resourceObjects) {
if (resourceObjects.hasOwnProperty(resourceName)) {
addResourceFactoryToService(service, resourceName, resourceObjects[resourceName].endpoint);
}
}
function addResourceFactoryToService (service, resourceName, resourceEndpoint) {
service.factory(resourceName, function($resource) {
return $resource(
constants.serverAddress + resourceEndpoint + '/:id',
{
id: '@id',
},
{
update: {
method: 'PUT',
params: {id: '@id'}
},
}
);
});
}
这样做的好处是添加一个新端点需要 2 秒,我什至为您提供了一个 put 方法。然后你可以像这样将你的任何资源注入到你的控制器中。
.controller('homeCtrl', function($scope, Foo, Bar) {
$scope.foo = Foo.query();
$scope.bar = Bar.get({id:4});
}