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

Как загрузить сервис по требованию?

Могу ли я взять значения атрибута в директиве и добавить сервис в зависимось в контроллере?
Если да , то как?
Зарание спачибо
Код

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

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

function tableData() {

	return {
		restrick: 'E',
		replace: true,
		transclude: true,
		template: require('../../template/directives/tableData.html'),
		controller: TableCtrl,
		controllerAs: 'table',
		bindToController: {
			type: '@'
		}
	}
}


function TableCtrl($scope, $filter) {

	var wm = this;
	wm.type // Название
}


Есть один вариант, но возможно можна сделать лучше
angular.module('tableData', [])
	.directive('tableData', tableData)
	.service('includeService', function(service1, service2){
		methods = {
			service1: oneService,
			service2: otherService
		}

		return  methods

	//#######################

	function oneService() {
		return service1
	}

	function otherService() {
		return service2
	}

	})

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

function tableData() {

	return {
		restrick: 'E',
		replace: true,
		transclude: true,
		template: require('../../template/directives/tableData.html'),
		controller: TableCtrl,
		controllerAs: 'table',
		bindToController: {
			type: '@'
		}
	}
}


function TableCtrl($scope, $filter, includeService) {
	
	var wm = this;
	wm.type // Название

	includeService[wm.type]


}



//################# Конструктори ################# //
  • Вопрос задан
  • 232 просмотра
Подписаться 2 Оценить 2 комментария
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
делайте stateless директивы и жизнь будет чуть проще и без этих извращений. Директиве нужны данные? Прокидывайте их снаруж через атрибуты. Введите себе такое простое правило, что директивы не получают состояние сами через сервисы. А сервисы должны использоваться директивой только для того что бы обновить состояние данных во вне, но сами опять же ничего не меняют.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
vawsan
@vawsan
Frontend Developer
Вот так поищите, вроде есть материал по этому поводу.
Ответ написан
Комментировать
У вас получается что-то типа сокрытия зависимостей в этом случае. Почему бы просто не заинжектить оба сервиса - а пользоваться тем, который нужен?
Ответ написан
Ваш ответ на вопрос

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

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