ngOptions
нуждается в модели, чтобы определить, какая опция должна быть выбрана по умолчанию или какая модель для записи выбранного объекта/значения при изменении выбора.
Если не было никакой директивы ngModel
, было бы трудно получить доступ к выбранному значению, и это потенциально может привести к неправильной практике, когда люди либо запрашивают DOM, чтобы определить значение, либо написать свои собственные директивы для этой цели. В обоих случаях это не идеально, так как этот тип вещей является ключевой идеей директив элементов угловой формы.
Также не стоит забывать, что ngOptions
в сочетании с ngModel
позволяют разработчику связывать целые объекты, как «значение» избранных элементов, что было бы сложно без ngModel
.
Наконец, если по какой-либо причине не требуется иметь какую-либо модель при выборе (хотя это мало смысла), можно отобразить опции с помощью ngRepeat
.
Благодарим вас за подробное объяснение о 'ng-options'. Я понимаю использование и преимущества 'ng-options'. 'options' с' ng-repeat' не будет вводить никаких ограничений в отношении 'ng-model'. Зачем применять это ограничение с помощью 'ng-options'. Почему он не может просто оценить выражение и заполнить параметры? –
Я думаю, что это дизайнерское решение. Просто не имеет смысла дублировать проблемы. 'ngRepeat' уже может отображать параметры, если вы хотите. Однако 'ngOptions' следует использовать для более гибкой и эффективной работы с моделью. Было бы очень легко позволить 'ngOptions' работать без' ngModel', но для этого потребуется несколько уродливых условий 'if' в коде. Почему, если вы уже можете использовать 'ngRepeat'. – dfsq
Это интересная мысль. Они могли бы создать пустой объект и установить ngModelCtrl в ссылку, если? NgModel вернул null вместо выхода.В документации действительно говорится, что преимущество ngOptions меньше созданных областей. – DTing