2015-05-13 2 views
0

Мне нужно реализовать директиву для пользовательской проверки ввода.Директива AngularJS: подход с использованием Singleton?

Такая директива, как ожидается, будет использоваться несколько раз на странице, но предоставить один визуальный элемент, содержащий сводку для всех текущих проблем, визуальный синглтон.

Каков наилучший подход к реализации такой директивы - для всех экземпляров для накачки деталей в объекты, которые делают визуализацию?

+0

Если все входы/пользовательские экземпляры валидатора находятся в одной и той же угловой форме, то одна директива в форме может получить доступ ко всем свойствам $ error любого ввода в форме, независимо от того, генерируются ли они с помощью специального валидатора или стандартного валидатор с использованием 'formName.inputName. $ error'. Или я чего-то не хватает? –

+0

Да, вам все равно нужна услуга для централизации ошибок, как объяснил Роберт Куритник ниже, поэтому все это требует: директивы для проверки и отчетности + службы для накопления ошибок + директивы для визуализации данных в службе. –

ответ

1

Лучшим способом было бы создать ValidationErrorsService, который будет использоваться всеми вашими валидаторами. Они просто добавили бы свои ошибки к нему, а затем отобразили бы их еще одну директиву или представление.

Поскольку эти ошибки временны в природе, служба должна была бы также дать возможность отбросить ранее имеющиеся ошибки.

service.addError(errorKey, value); 
service.clearError(errorkey); 

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

+0

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

+0

Нет. Однако пользовательская директива, т. Е. '<Сводка ошибок>', может. Просто добавьте свою службу к этой директиве и покажите значения. Кажется утомительным, но это наилучший подход для вашего сценария. И эта пользовательская директива была бы довольно простой. –

+0

Это должно быть сделано. Спасибо за ответ. –

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