假设我正在使用angular-resource
- 模块和ng-app
。我无法理解data
处理简单易行的方式..任何人都能给我/给我一个回答所有这些问题的正确方法吗?
a)一般如何从角度中的url中获取数据。
b)如果每个控制器可能需要不同的URL和数据(如果是这样的话)fetch
进程如何在每个控制器上添加。?
c)或者我们是否需要根据控制器参数提供服务来提供数据 - 如果是的话如何将参数传递给服务?
d)以上所有内容都有GET
,PUT
和DELETE
,' POST`然后如何处理所有这些 - 这是否需要单独的服务?
提前致谢。
答案 0 :(得分:1)
按照服务/工厂中的说法使用angular-resource
。它已经提供了很多要求:
myApp.factory("dataService", [
"$resource",
function ($resource) {
return $resource("http://someBaseUrl/:action/:id", {
id: "@id" // default parameters
},
{
// custom methods
update: { method: "PUT" },
doOtherStuff: { method: "GET", action: "DoOtherStuff" }
});
}
]);
$resource
默认提供以下REST兼容功能:
{
'get': {method:'GET'},
'save': {method:'POST'},
'query': {method:'GET', isArray:true},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'}
};
您必须自己包含的任何其他功能,例如上面示例中的update
和doOtherStuff
。
:action
部分是提供任何自定义操作的简便方法,不符合REST。
控制器中的用法:
myApp.controller("myCtrl", [
"dataService",
function (dataService) {
// first parameter can be used for any extra query parameters
// second parameter always is a callback
var myData = dataService.query({}, function() {
// success
});
var mySingleInstance = dataService.get({ id: 12 });
this.doUpdate = function (entity) {
dataService.update(entity);
// Or, if the 'entity' is a resource entity:
// entity.$update();
}
this.customMethod = function () {
dataService.doOtherStuff();
}
}
]);
有关完整文档,请参阅https://docs.angularjs.org/api/ngResource/service/ $资源