Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SharePoint在javascript中获取多值个人或组_Javascript_Angularjs_Sharepoint - Fatal编程技术网

SharePoint在javascript中获取多值个人或组

SharePoint在javascript中获取多值个人或组,javascript,angularjs,sharepoint,Javascript,Angularjs,Sharepoint,Id“希望能够从我的sharepoint列表中获取姓名,这些姓名将使用peoplepicker添加,并与字段名“People”和“Responsible”一起存储,它们在sharepoint中属于“person或group”类型。在我的服务文件中,我有以下内容: this.getPeople = function () { var deferred = $.Deferred(); var restQueryUrl = appweburl + "/_api/lists/g

Id“希望能够从我的sharepoint列表中获取姓名,这些姓名将使用peoplepicker添加,并与字段名“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”中

这适用于单值“Responsible”字段,但不适用于多值“People”字段,我认为我必须迭代“People”字段中的对象,但我不知道在何处或如何有效地执行此操作。
简言之:如何将多个值放入我的联系人列表中

由于SharePoint REST service以以下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
      });
});

我必须说,我刚刚(几秒钟前)完成了一个变通方法,只为多值字段创建了一个全新的请求,它成功了。但现在我尝试了您的解决方案,它与我的其他字段完美配合(因此不需要新的请求)。谢谢!!