#javascript #html #angularjs #angularjs-directive
#javascript #HTML #angularjs #angularjs-директива
Вопрос:
Я большой поклонник angularjs, я недавно начал использовать его во всех своих проектах «coding for fun«. У меня большое любопытство:
У меня есть два входа, один из которых отключен директивой ng-disabled, а другой отключен с помощью тега html (лучшая иллюстрация по этой ссылке):
//...
<input type="text" disabled value="This is an html input text disabled" />
<input type="text" ng-disabled="true" value="disabled with angular js directive" />
//...
Используя возможности браузера, я могу щелкнуть правой кнопкой мыши по вводу и удалить теги disabled и ng-disabled, но редактировать будет доступен только тот, у которого отключен тег disabled, другой все равно будет отслеживаться angular, даже если директивы с отключенным ng были удалены.
Итак, когда и почему я должен предпочесть использовать директивы ng вместо собственных тегов html? Какое влияние может оказать разрешение angular отслеживать все эти действия? действительно ли стоит использовать его везде?
Комментарии:
1. Предпочитайте директивы, когда вам нужна привязка данных в реальном времени между вашей моделью и вашим представлением. В противном случае используйте собственные атрибуты HTML.
Ответ №1:
Используйте собственный html ‘disabled’, если элемент всегда должен быть отключен. (статический, например, если вы хотите ввести ввод с текстом и никогда не позволять пользователю изменять его)
Используйте angular, если он должен изменяться на основе значений переменных в области видимости.
Например, скажем, кнопка должна изменить состояние ввода.
<input type="button" ng-click="inpDisabled = true" >Disable Input</input>
<input type="text" ng-disabled="inpDisabled" />
Никакого вреда не будет, если вы все еще используете ng-disabled="true"
, но это избыточно.
Ответ №2:
Если вы хотите сделать директиву статической, вы должны использовать собственный html
<your-tag disable><your-tag>
против
<your-tag ng-disabled="true"><your-tag>
Но AngularJS так не работает, вы должны инициализировать свое приложение и контроллер, а затем передать переменную в качестве параметра в свою директиву:
JS:
$scope.isDisabled = true;
HTML:
<your-tag ng-disabled="isDisabled"><your-tag>
Вы должны прочитать больше руководств, чтобы прояснить ситуацию