Id'希望能够从我的共享点列表中获取名称,这些名称添加了人员选择器,并与字段名称“ People”和“ Responsible”一起存储,它们在SharePoint中的类型为“ person或group”。在我的服务文件中,我有:

    this.getPeople = function () {
    var deferred = $.Deferred();

    var restQueryUrl = appweburl + "/_api/lists/getByTitle('RisikoAnalyse')/items?$select=People/Title,Responsible/Title&$expand=People/Title,Responsible/Title";
    var executor = new SP.RequestExecutor(appweburl);
    executor.executeAsync({
        url: restQueryUrl,
        method: "GET",
        headers: { "Accept": "application/json; odata=verbose" },
        success: function (data, textStatus, xhr) {
            deferred.resolve(JSON.parse(data.body));
        },
        error: function (xhr, textStatus, errorThrown) {
            deferred.reject(JSON.stringify(xhr));
        }
    });
    return deferred;
};


我从中得到两个字段,“ People”是多值字段,而“ Responsible”则只有一个值。
换句话说,第一个字段将具有多个名称,而另一个字段将仅具有一个名称。

在我的控制器中,我有:

        $.when(SPService.getPeople())
        .done(function (jsonObject) {
            angular.forEach(jsonObject.d.results, function (obj) {
                $scope.peopleList.push({
                    people: obj.People.Title,
                    responsible: obj.Responsible.Title

                });
                //$scope is not updating so force with this command
                if (!$scope.$$phase) {
                    $scope.$apply();
                }
            });
        });


在这里,我遍历“ jsonObject.d.results”中的所有对象,并将它们推送到我的人员列表“ PeopleList”中。

这适用于单一值“负责人”字段,但不适用于多重值“人”字段,我想我必须遍历“人员”字段中的对象,但我不知道该在哪里或如何做这是有效的方式。
简而言之:如何将多个值输入到peopleList中?

最佳答案

由于SharePoint REST服务以以下JSON格式返回多值用户字段:

{
   results:
      [ { Title: "John Doe"}],
      [ { Title: "Jane Doe"}]
}


您可以提取人物标题,如下所示:

var peopleTitles = item.People.results.map(function(p){ return p.Title});


控制器的修改示例

angular.forEach(jsonObject.d.results, function (obj) {
     var peopleTitles = typeof obj.People.results != 'undefined' ? obj.People.results.map(function(p){ return p.Title}) : [];
      $scope.peopleList.push({
           people: peopleTitles,
           responsible: obj.Responsible.Title
      });
});

关于javascript - SharePoint在javascript中获得多值个人或组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31511278/

10-10 05:05