Angularjs - добавление директивы атрибута в select clobbers ng-options

Я пытаюсь добавить директиву атрибута в select, который использует ng-options:

На данный момент это не делает ничего значимого:

angular.module("monitor", [])
.directive("monitor", function()
{
 var directive =
 {
 restrict: "A",
 scope:
 {
 },
 controller: function($scope)
 {
 console.log("I exist");
 }
 };

 return directive;
});

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

Имея директиву, я вижу это в HTML как единственный вариант для выбора:

В отличие от этого, когда вы не используете директиву:

<option value="0" selected="selected">Cats</option>
<option value="1">Dogs</option>

Почему моя директива может нарушать ng-options?

Спасибо.

1 ответ

Здесь есть несколько проблем, которые могут быть причиной проблемы.

Согласно Руководству разработчика AngularJS по директивам:

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

Вы создаете новую область выделения в своей директиве, которая, вероятно, переопределяет сферу действия других директив, включая ng-options.

Кроме того, вы должны иметь в виду, что аргумент контроллера создает новый контроллер, который совместно используется с другими директивами:

Функция конструктора контроллера. Контроллер создается до фазы предварительной привязки и делится с другими директивами (см. Атрибут require). Это позволяет директивам общаться друг с другом и дополнять друг друга.

Если вы не хотите использовать свою директиву для обмена данными с другими директивами, вам, вероятно, следует избегать создания контроллера.

Есть ли причина, по которой ваша директива не может выполнить то, что ей нужно сделать в простой функции ссылок?

licensed under cc by-sa 3.0 with attribution.