angularjs соединяет выпадающий список с выбором файла

0

У меня есть предопределенные изображения, и я хочу создать spinner, где пользователь может выбрать эти элементы; но я хочу также кнопку выбора файла для пользовательских изображений.

<div>
  <select class="form-control" ng-model="inputQ.image">
     <!-- show if there is no image -->
     <option disabled value="{{ undefined }}"
            ng-hide="inputQ.image && !isImageFromSpinner(inputQ.image)">
        Nichts ausgewählt
     </option>
     <!-- show if there is a custom image -->
     <option disabled
            ng-show="inputQ.image && !isImageFromSpinner(inputQ.image)"
            value="{{ isImageFromSpinner(inputQ.image) ? undefined : inputQ.image }}">
        Benutzerdefiniertes Bild ausgewählt
     </option>
     <option ng-repeat="res in exerciseRessources.images"
            value="{{res.blob}}" ng-disabled="res.disabled">
        {{res.name}}
     </option>
  </select>
  <br>
</div>
<div file-chooser ng-model="inputQ.image" accept="image/*">
  <img class="input" ng-src="{{inputQ.image}}" alt="Beispiel"
      ng-show="inputQ.image">
  <br ng-show="inputQ.image">
  <button class="btn btn-default" file-select>Bild auswählen...
  </button>
  <button class="btn btn-default" file-unselect>
     <span class="glyphicon glyphicon-trash"></span>
  </button>
</div>

Я хочу обработать настраиваемое изображение в элементе выбора со вторым параметром, а первое - для init.

но функция isImageFromSpinner возвращает альтернативно true и false.

$scope.isImageFromSpinner = function (model) {
    $scope.exerciseRessources.images.forEach(function (img) {
        if (img.blob && img.blob === model) {
            $log.warn(model, true);
            return true;
        }
    });
    $log.warn(model, false);
    return false;
};

Если элемент находится в прядильщике, он должен быть истинным, иначе false. Не true, false, true ,...
Поэтому неудивительно, что параметры выбора работают неправильно.

Знает ли кто-нибудь, почему я получаю это в качестве альтернативы истинным или ложным?

  • 0
    Вы не можете использовать hide <option> . Это не поддерживается кросс-браузер. Определенно не будет работать в IE
  • 0
    спасибо за вклад
Теги:

1 ответ

1
Лучший ответ
$scope.isImageFromSpinner = function (model) {
    returnVal = false;
    $scope.exerciseRessources.images.forEach(function (img) {
        if (img.blob && img.blob === model) {
            returnVal = true;
            $log.warn(model, returnVal);
            break;
        }
    });
    return returnVal;
};
  • 1
    действительно; так легко? а можешь объяснить почему? ^^
  • 1
    Ваш исходный код возвращается дважды, а второй всегда ложный. Что вы действительно хотели сделать, так это выяснить, есть ли какое-либо совпадение и сразу выйти из цикла, а затем вернуть значение. Поэтому я просто немного изменил ваш код, чтобы сделать это. :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню