2015-07-20 72 views
1

Id'喜欢能够从我的分享点列表中获取姓名,这些姓名将添加一个peoplepicker,并与字段名称'People'和'Responsible'一起存储,它们是在SharePoint中输入'person or group'。在我服务的文件我有这样的:SharePoint在javascript中获得多个值的人员或组

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; 
}; 

我从这个两个领域,对“人”,这是多值字段,以及一个“负责任的”,其中仅一个值是允许的。 换句话说,第一个字段中会有几个名字,而另一个字段中只有一个名字。

在我的控制,我有:

 $.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?

回答

1

由于的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 
     }); 
}); 
+1

我必须说,我刚刚完成(srsly秒前)一个解决方法,创建一个全新的请求,只有多值字段,它的工作。但是现在我尝试了您的解决方案,并且与我的其他领域完美配合(因此不需要新的请求)。非常感谢!! – klskl

相关问题