Angular - 正确处理从服务器获取数据的方法?

时间:2015-06-10 06:49:42

标签: angularjs

假设我正在使用angular-resource - 模块和ng-app。我无法理解data处理简单易行的方式..任何人都能给我/给我一个回答所有这些问题的正确方法吗?

a)一般如何从角度中的url中获取数据。

b)如果每个控制器可能需要不同的URL和数据(如果是这样的话)fetch进程如何在每个控制器上添加。?

c)或者我们是否需要根据控制器参数提供服务来提供数据 - 如果是的话如何将参数传递给服务?

d)以上所有内容都有GETPUTDELETE,' POST`然后如何处理所有这些 - 这是否需要单独的服务?

提前致谢。

1 个答案:

答案 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'} 
};

您必须自己包含的任何其他功能,例如上面示例中的updatedoOtherStuff

: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/ $资源