Подтвердить что ты не робот

Как добавить невыбираемый и настраиваемый заполнитель в поле выбора

У меня есть довольно большое приложение, в котором есть много выпадающих меню. Я не хочу изменять свои данные, чтобы добавить пустой параметр, и я не хочу, чтобы выборщик был выбран. Какой лучший подход?

4b9b3361

Ответ 1

Мы можем сделать это легко, используя мощную систему директив angular для расширения базового html.

app.directive('select', function($interpolate) {
  return {
    restrict: 'E',
    require: 'ngModel',
    link: function(scope, elem, attrs, ctrl) {
      var defaultOptionTemplate;
      scope.defaultOptionText = attrs.defaultOption || 'Select...';
      defaultOptionTemplate = '<option value="" disabled selected style="display: none;">{{defaultOptionText}}</option>';
      elem.prepend($interpolate(defaultOptionTemplate)(scope));
    }
  };
});

Теперь мы можем сделать следующее:

<select ng-model="number" 
    ng-options="item.id as item.label for item in values">
</select>

Это создаст поле выбора с невыбираемым заполнителем, в котором будет указано "Выбрать..."

Если нам нужен пользовательский заполнитель, мы можем просто сделать это:

<select ng-model="dog" 
    ng-options="dog.id as dog.label for dog in dogs" 
    default-option="What your favorite dog?">
</select>

Это создаст поле выбора с невыбираемым заполнителем, в котором говорится: "Какая ваша любимая собака?"

Пример плунжера (в coffeescript): http://plnkr.co/edit/zIs0W7AdYnHnuV21UbwK

Пример плунжера (в javascript): http://plnkr.co/edit/6VNJ8GUWK50etjUAFfey

Ответ 2

Вы также можете сделать это непосредственно в html.

<select   ng-model="number"
          ng-options="item.id as item.label for item in values">
          <option value="" disabled selected style="display: none;"> Default Number </option>
></select>