角度资源自定义post方法

时间:2015-09-08 07:42:55

标签: angularjs ngresource

我需要将数据发布到SharePoint列表,我想通过使用来清理我的代码 资源工厂,到目前为止我发布了这样的数据:

this.save = function(data) {
    data["__metadata"] = { "type": getItemTypeForListName('ListName') };
    var restQueryUrl = appweburl + "/_api/lists/getByTitle('ListName')/items";
    $.ajax({
        url: restQueryUrl,
        type: "POST",
        headers: {
            "accept": "application/json;odata=verbose",
            "X-RequestDigest": $("#__REQUESTDIGEST").val(),
            "content-Type": "application/json;odata=verbose"
        },
        data: JSON.stringify(data),
        success: function (data) {
            console.log(data);
        },
        error: function (error) {
            alert(JSON.stringify(error));
        }
    });
};

到目前为止,我的资源工厂看起来像这样:

myApp.factory('Entry', function($resource) {

  return $resource(appweburl + "/_api/lists/getByTitle('ListName')/items", {}, {
    get: {
        method: 'GET',
        headers: { "Accept": "application/json; odata=verbose" },
        url: appweburl + "/_api/lists/getByTitle('ListName')/items?$select=Id,Title,Description&$filter=ID eq :ID"
    },
    query: {
        method: 'GET',
        headers: { "Accept": "application/json; odata=verbose" },
        url: appweburl + "/_api/lists/getByTitle('ListName')/items?$select=Id,Title,Description"
    }
  })
});

我该怎样转换'我的保存功能到资源方法?

1 个答案:

答案 0 :(得分:0)

Okey,所以我比我想象的要容易,我要做的就是运行函数' getItemTypeForListName'在调用save函数之前,这会添加保存到sharepoint所需的元数据。在我的资源工厂中添加:

    save: {
        method: 'POST',
        headers: {
            "accept": "application/json;odata=verbose",
            "X-RequestDigest": $("#__REQUESTDIGEST").val(),
            "content-Type": "application/json;odata=verbose"
        }
    }

然后在我的控制器中调用它:

$scope.test = new Entry();
$scope.test.Title = 'testTitle';

// function to set metadata
$scope.test["__metadata"] = { "type": getItemTypeForListName('ListName') };
Entry.save($scope.test);