В настоящее время я сталкиваюсь с трудностями в моих кодах.
Сначала у меня есть массив таких объектов [{Id:1, Name:"AML", allowedToView:"1,2"}, {Id:2, Name:"Res", allowedToView:"1"}...]
, который пришел из моего сервиса
Я назначаю его в переменной $scope.listofResource
Затем внутри одного из моих объектовУ меня есть ключ allowedToView
, который представляет собой набор идентификаторов пользователей, которые я разделяю запятыми.
Затем у меня есть этот код ...
Javascript
$scope.listofResource = msg.data
for (var i = 0; i < msg.data.length; i++) {
Сначала я запускаю цикл for, чтобы я мог отделить Id's
каждого пользователя в ключе allowedToView
var allowed = msg.data[i].allowedToView.split(",");
var x = [];
Затем я создаю переменную x
, чтобы я мог нажатьновый объект к нему с ключами allowedId
, который в основном является идентификатором пользователей и resId
, который является идентификатором ресурса
for (var a = 0; a < allowed.length; a++) {
x.push({ allowedId: allowed[a], resId: msg.data[i].Id });
}
Затем я помещаю его в Promise.all
, потому что у меня естьчтобы получить имя этого «разрешенного пользователя» на основе их идентификаторов, используя сервис
Promise.all(x.map(function (prop) {
var d = {
allowedId: parseInt(prop.allowedId)
}
return ResourceService.getAllowedUsers(d).then(function (msg1) {
msg1.data[0].resId = prop.resId;
Здесь он возвращает идентификатор и имя разрешенного пользователя.Я должен вставить resId
, чтобы он мог перейти к возвращаемому объекту, и он будет отображаться в .then()
ниже
return msg1.data[0]
});
})).then(function (result) {
Я получил желаемый результат, но вот теперь моя проблема
angular.forEach(result, function (val) {
angular.forEach($scope.listofResource, function (vv) {
vv.allowedToView1 = [];
if (val.resId === vv.Id) {
vv.allowedToView1.push(val);
Я хочу обновить $scope.listofResource.allowedToView1
, который должен содержать массив объектов, и это в основном информация о разрешенных пользователях.Но всякий раз, когда я нажимаю здесь значение vv.allowedToView1.push(val);
, он всегда обновляет последний объект массива.
}
})
})
});
}
Таким образом, результат моего кода всегда такой: [{Id:1, Name:"AML", allowedToView:"1,2", allowedToView:[]}, {Id:2, Name:"Res", allowedToView:"1", allowedToView:[{Id:1, Name:" John Doe"}]}...]
Первый результат всегда пуст.Кто-нибудь может мне помочь?
Вот плункер этого ... Plunkr