У меня есть две функции, которые по существу идентичны. Как для линии действительно. Один используется для добавления пользователей, другой используется для их удаления. Мне интересно, есть ли лучший способ сделать это? Или я должен просто держать его отдельно.Объединение двух функций
Добавить Функции контроллера пользователя:
$scope.addUserToGroup = function(){
userService.addUserToGroup($scope.selectedUser, $scope.selectedAvailableGroups, $scope.assignedGroups, $scope.availableGroups,$scope.groups);
};
Добавить Абонентское обслуживание Функция:
var addUserToGroup = function (selectedUser, selectedAvailableGroups, assignedGroups, availableGroups){
var deferred = $q.defer();
var addPromise = [];
var selectLength = selectedAvailableGroups.length;
//Add user to selected groups on server
deferred.promise
.then(function(){
for (var i = 0; i < selectLength; i++){
addPromise[i] = $().SPServices({
operation: "AddUserToGroup",
groupName: selectedAvailableGroups[i].name,
userLoginName: selectedUser.domain
});
};
})
.then(function(){
//when promise finished, push changes to availableGroups
for (var i = 0; i < selectLength; i++){
assignedGroups.push(selectedAvailableGroups[i]);
//compare groups
};
})
.then(function(){
alert(selectedUser.name + " added to: " + JSON.stringify(selectedAvailableGroups));
})
//Run
deferred.resolve();
}
Удалить Функция пользователя контроллера:
$scope.removeUserFromGroup = function(){
userService.removeUserFromGroup($scope.selectedUser,$scope.selectedAssignedGroups, $scope.availableGroups, $scope.assignedGroups)
};
Remove Service User Function:
var removeUserFromGroup = function (selectedUser,selectedAssignedGroups, availableGroups, assignedGroups){
var deferred = $q.defer();
var removePromise = [];
var selectLength = selectedAssignedGroups.length;
//Remove user from selected groups on server
deferred.promise
.then(function(){
for (var i = 0; i < selectLength; i++){
removePromise[i] = $().SPServices({
operation: "RemoveUserFromGroup",
groupName: selectedAssignedGroups[i].name,
userLoginName: selectedUser.domain
});
};
})
.then(function(){
//when promise finished, push changes to availableGroups
for (var i = 0; i < selectLength; i++){
availableGroups.push(selectedAssignedGroups[i]);
//compare groups
};
})
.then(function(){
alert(selectedUser.name + " removed from: " + JSON.stringify(selectedAssignedGroups));
})
//Run
deferred.resolve();
}
HTML:
<div id="moveButtons" >
<button type="button" ng-disabled="!selectedUser" ng-click="addUserToGroup()">Add User</button>
<button type="button" ng-disabled="!selectedUser" ng-click="removeUserFromGroup()">Remove</button>
</div>
Также на стороне записки: Я передаю как 4 аргументы в эти функции каждого. Это похоже на многое. Это лучший способ сделать это? Я чувствую, что это могло бы облегчить работу, если бы я объединил все переменные переменной $ scope в объект и просто передал объект в функцию, это имело бы смысл?
Pass 'operation' и предупредительного текст в качестве параметра? –
Я не думаю, что один будет работать. Поскольку, например, массивы, которые я использую в каждой функции, различаются между доступными и назначенными группами. – Batman