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

Как избавиться от контроллеров?

У меня есть несколько страниц, в которых почти все идентично, не считая данних и нескольно других методов
Если я создаю Директиву, то не знаю как добавить к каждой странице различний метод, а если создавать Котроллер, то почти все повторяеться (кроме тех одного или двох методов)
Как правильно использовать Контроллер Директив, чтоб не создавать несколько почти идентичних контроллеров?
Зарание спасибо

Пример

angular.module('card', [])
	.directive('card', card)

///////////////////// Логика //////////////////////////

function card($uibModal) {

	return {
		restrick: 'E',
		replace: true,
		transclude: true,
		template: 'card.html',
		controllerAs: 'card',
		controller: controller,
		bindToController: {
			type: '@'
		}
	}
}

function controller($uibModalStack, clientsService) {

	var wm = this;

	wm.close = close;

	getData();

	///////////////////////////////////////////////

	function close() {
		$uibModalStack.dismissAll()
	}

	function getData() {
		return clientsService.card()
		.then(function(res) {
			wm.info = res.data.data;
		})
	}
}


Страница 1
<card><span ng-click='card.close()'>x<span></card>

Страница 2 (появился еще один метод
<card>
    <span ng-click='card.close()'>x<span>
    <span ng-click='card.add()'>+<span>
</card>
  • Вопрос задан
  • 294 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Дробим UI на компоненты (под компонентами я понимаю директиву, кастомный элемент со своим шаблоном и контроллером), все что можно реюзать - реюзаем.

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

Говорить о какой-либо конкретике можно только видя хотя бы примерный мокап того что вы хотите сделать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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