SharePoint 在 javascript 中获得多个有价值的人或组
SharePoint get multiple value person or group in javascript
我'希望能够从我的共享点列表中获取姓名,这些姓名通过人员选择器添加,并与字段名称 'People' 和 'Responsible' 一起存储,它们的类型为 'person or group' 在 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;
};
我从中得到两个字段,在 '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' 字段内的对象,但我不知道在哪里或如何以有效的方式做到这一点。
简而言之:如何将多个值添加到我的 peopleList 中?
由于 SharePoint REST 服务 returns 多值 用户字段采用以下 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
});
});
我'希望能够从我的共享点列表中获取姓名,这些姓名通过人员选择器添加,并与字段名称 'People' 和 'Responsible' 一起存储,它们的类型为 'person or group' 在 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;
};
我从中得到两个字段,在 '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' 字段内的对象,但我不知道在哪里或如何以有效的方式做到这一点。 简而言之:如何将多个值添加到我的 peopleList 中?
由于 SharePoint REST 服务 returns 多值 用户字段采用以下 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
});
});