标识'为了能够从我的sharepoint列表中获取名称,这些名称会添加一个peoplepicker,并与字段名称' People'一起存储。和“责任人”,他们属于“人或团体”类型。在SharePoint中。在我的服务文件中,我有这个:
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中?
答案 0 :(得分: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
});
});