我有一个带有许多$ 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 :(得分:1)
虽然它实际上取决于应用程序,但是您的范围中的变量可能更多地与业务逻辑有关,并且应该存储在服务中。如果视图需要它们,则控制器可以访问服务中的变量并对其进行调整,但不需要将它们全部发送回服务,除非它们发生变化。
答案 1 :(得分: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
});
};