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/