我有兩個基本相同的功能。真的很喜歡線。一個用於添加用戶,另一個用於刪除它們。我想知道是否有更好的方法來做到這一點?或者我應該保持獨立。結合兩個功能
添加用戶控制功能:
$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)
};
刪除用戶服務功能:
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:
另外一個側面說明:我喜歡傳遞4個參數輸入到這些功能。這似乎很多。這是做這件事的最好方法嗎?我覺得如果我將所有$ scope變量組合到一個對象中,並簡單地將該對象傳遞給該函數,會讓事情變得更容易,這會更有意義嗎?
通'operation'和警報文本作爲參數? –
我不認爲這樣會有效。由於例如我在每個函數中使用的陣列在可用組和已分配組之間有所不同。 – Batman