SharePoint在javascript中获取多值个人或组
Id“希望能够从我的sharepoint列表中获取姓名,这些姓名将使用peoplepicker添加,并与字段名“People”和“Responsible”一起存储,它们在sharepoint中属于“person或group”类型。在我的服务文件中,我有以下内容: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
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
});
});
我必须说,我刚刚(几秒钟前)完成了一个变通方法,只为多值字段创建了一个全新的请求,它成功了。但现在我尝试了您的解决方案,它与我的其他字段完美配合(因此不需要新的请求)。谢谢!!