#angularjs
#angularjs
Вопрос:
Сейчас я работаю над несколькими проектами AngularJS, где директивы широко используются для обработки представлений, за которыми в конечном итоге стоит большое количество JavaScript. Это не совсем правильно, и их также не так просто протестировать, если вы не переместите код в контроллеры и не привяжете его к директиве.
Примером может служить большая форма, созданная как директива, и большая функция ссылки, размещенная на ней. Не очень проверяемый, и он используется только один раз во всем приложении.
Они хорошо разделяют код, в результате чего вы получаете такой код
<h1>example Header</h1>
<custom-form form-data="somemodel"></cutom-form>
<p>Lots of other stuff here</p>
Было бы интересно узнать, как другие люди подходят к директивам и представлениям, поскольку я сначала думал, что директивы должны быть действительно небольшими компонентами, которые используются повторно.
Ответ №1:
В принципе, я буду реализовывать директиву лишь в нескольких случаях, и это также правила, которых я пытаюсь придерживаться
- общие повторно используемые компоненты, которые я могу использовать в любом месте проекта (например, директива ввода времени с дополнительным выпадающим меню позволяет выбирать единицы измерения времени, такие как секунда / минута / час / день)
- Расширяйте или исправляйте стороннюю директиву
В большинстве случаев следует использовать структуру AngularJS MVC, чтобы в полной мере использовать ее преимущества.
Комментарии:
1. Если у вас есть экран, состоящий из нескольких разделов, вы бы тогда использовали controller view? Будет ли это использовать ngInclude?
2. В этом случае, да, использование ngInclude было бы отличным способом модуляции содержимого вашего просмотра страницы, но вам может потребоваться соблюдать осторожность, чтобы ngIncude извлекал шаблон асинхронно, что, вероятно, приведет к неожиданному поведению, если вы попытаетесь манипулировать ngIncluded DOM. Мы используем ngInclude для верхнего, нижнего колонтитула, контейнера и меню навигации на нашей индексной странице, однако мы столкнулись с проблемой использования angular-loading-bar внутри ngInclude см. github.com/chieffancypants/angular-loading-bar/issues/217 .
3. Интересно, я не видел, чтобы ngInclude так часто использовался в проектах, в которых я участвовал, но это звучит как аккуратный способ и, с положительной стороны, более тестируемый код директивы, а точнее, большая директива с большим количеством кода