Задать вопрос
@JIakki

Как улучшить контроллеры?

Есть два контроллера
app.controller 'showDialogCtrl', ['$scope', '$mdDialog', '$mdSidenav', '$mdUtil',  ($scope, $mdDialog, $mdSidenav, $mdUtil) ->
	$scope.showChange = (event, block, img, name) ->
		$mdDialog.show
			locals:
				parent:
					img: img
					name: name
					block: block
			controller: "CategoriesCtrl",
			templateUrl:'change.html',
			targetEvent: event,
			clickOutsideToClose:true
	$scope.showAdd = (event, block) ->
		$mdDialog.show
			locals:
				parent:
					block: block
			controller: "CategoriesCtrl",
			templateUrl:'add.html',
			targetEvent: event,
			clickOutsideToClose:true
	$scope.showAddToSource = (event) ->
		$mdDialog.show
			controller: "addToSouceCtrl",
			templateUrl:'add-to-source.html',
			targetEvent: event,
			clickOutsideToClose:true
	$scope.showAddToCategory = (from, to, event) ->
			controller: "addToCategoryCtrl",
			templateUrl:'add-to-category.html',
			targetEvent: event,
			clickOutsideToClose:true
	$scope.showSettings = (id) ->
		return $mdUtil.debounce( ()->
			$mdSidenav(id).open()
		,100 )()
]
app.controller 'CategoriesCtrl', ['$scope', '$mdDialog', 'parent', "$http", 'localData', ($scope, $mdDialog, parent, $http, localData) ->
	$scope.default = 'tag.svg'
	$scope.category = parent
	$scope.category.newName = parent.name

	$scope.change = ->
		do $mdDialog.hide;
		$http.post "/changeCategory",
			icon : $scope.category.img
			newName : $scope.category.newName
			block: $scope.category.block
			name: $scope.category.name
		.success ->
			do location.reload
	$scope.loadIcon = ->
		$scope.Icons = localData.Icons
		$scope.changeCheck = true	
	$scope.openMenu = ($mdOpenMenu, event) ->
		originatorEv = event;
		$mdOpenMenu event;
	$scope.changeIcon = (icon) ->
		$scope.default = $scope.category.img = icon
		$scope.changeCheck = false
	$scope.add = () ->
		do $mdDialog.hide;
		$http.post "/add",
			icon : $scope.default
			name : $scope.category.name
			block: $scope.category.block
		.success ->
			do location.reload
	$scope.delete = (check) ->
		if check
			$http.post "/delete",
				oldName: $scope.category.oldName
				block: $scope.category.block
			.success ->
				do location.reload
]


Как его можно улучшить?
Может что то лишнее, что не должно быть в контроллере.
Буду благодарен за совет!
  • Вопрос задан
  • 380 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Может что то лишнее, что не должно быть в контроллере


1) никаких скоупов в контроллерах, используйте controller as синтаксис.
2) дробите все на директивы, старайтесь делать так, что бы все приложение состояло из директив, или отдельных компонентов.
3) именуйте методы контроллера... логичнее...
4) устраните дублирование кода, у вас там масса весьма однообразного кода.
5) вынесите работу с данными в сервисы.
6) используйте классы (es6 или coffee)
Ответ написан
@wittyrider
systemd есть людей
1. s/coffee/es6/g
2. Используйте ngAnnotation
3. Прочитайте стайлгайд если еще не читали

остальное уже написали.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы