2014-01-21 6 views
0

У меня есть контроллер со многим $ scope.variablesПростой способ передачи переменных области в службу?

$scope.users = userService.getUsers(); 
$scope.selectedAvailableGroups; 
$scope.selectedAssignedGroups; 
$scope.availableGroups; 
$scope.assignedGroups; 

У меня есть функции в моем контроллере, который использует услугу, и служба должна заданы параметры, переданные ему:

$scope.removeUserFromGroup = function(){ 
    userService.removeUserFromGroup($scope.selectedUser,$scope.selectedAssignedGroups, $scope.availableGroups, $scope.assignedGroups) 
}; 

ли вы можете увидеть, функция removeUserFromGroup принимает в 4 аргумента, но имя длинное, и оно действительно не кажется эффективным.

Действительно ли это лучший способ сделать это, или я делаю что-то неправильно?

У меня есть функция, называемая addUserToGroup, и она использует в основном те же самые аргументы, кажется излишним, что мне нужно будет передать эту информацию службе снова.

ответ

0

Если вы беспокоитесь о читаемости, можно форматировать вызов, как это (который я думаю, читает немного лучше):

$scope.removeUserFromGroup = function(){ 
    userService.removeUserFromGroup(
     $scope.selectedUser, 
     $scope.selectedAssignedGroups, 
     $scope.availableGroups, 
     $scope.assignedGroups 
    ); 
}; 

Если вы действительно беспокоили о количестве параметров, и они «повторно, вероятно, увеличится, вы можете передать их в качестве свойств одного объекта:

$scope.removeUserFromGroup = function(){ 
    userService.removeUserFromGroup({ 
     selectedUser: $scope.selectedUser, 
     selectedGroups: $scope.selectedAssignedGroups, 
     availableGroups: $scope.availableGroups, 
     assignedGroups: $scope.assignedGroups 
    }); 
}; 
+0

Будет что-то вроде этой работы: http://jsfiddle.net/85r4H/ – Batman

+0

Это будет - http://jsfiddle.net/LfEtp/1/. Кажется немного странным создание свойства модели в области видимости, поскольку, по существу, объект области является самой моделью представления. Также в вашем последнем примере вы передаете список пользователей службе, которую вы только что извлекли. Поскольку служба уже имеет эту информацию, зачем передавать ее назад и вперед? –

+0

Учитывая ваш комментарий о $ scope, уже являющемся моделью, могу ли я просто не передать сам объект $ scope в функцию? userService.removeUserFromGroup ($ scope) вместо создания другого объекта с именем model? И да. Мне не нужен пользовательский объект, так как он уже находится в сервисе, хороший вызов. – Batman

1

Хотя это зависит от приложения, возможно, переменные в объеме имеют больше общего с бизнес-логикой и должны храниться в обслуживание. Если они необходимы для представления, контроллер может получить доступ и отобразить переменные из службы, но им не нужно отправлять все их обратно в службу, кроме тех случаев, когда они меняются.

+0

Я никогда не думал о переносе переменных в службу. Мне кажется, что пользовательский массив исходит из права пользователя. Я сделаю это. – Batman

Смежные вопросы