Когда следует предпочесть директиву angular собственному тегу html?

#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>
 

Вы должны прочитать больше руководств, чтобы прояснить ситуацию