Angular Выбранный по умолчанию не работает с объектом

0

Я использую https://github.com/localytics/angular-chosen, чтобы можно было выбирать теги с возможностью поиска для многих параметров.

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

<select chosen 
        ng-model="myVendor" 
        ng-options="vendor['public-id'] as vendor.name for vendor in vendors" 
        data-placeholder="Nah">
</select>

И в моем контроллере я устанавливаю модель вручную $scope.myVendor = "Some value"

Проблема в том, что я заполняю опции с помощью объекта вместо ключа/значения. Я нашел пример его работы с ключом/значением, но не успел адаптировать его к объектам в качестве параметров.

Я даже пытался установить myVendor на соответствующий объект, который я хочу выбрать, без везения.

Пункер выпуска

Теги:
jquery-chosen
angular-chosen

1 ответ

1
Лучший ответ

Я обновил плункер и изменил свои предыдущие изменения в плагине. это не проблема. Я не понимаю, как это давало мне ошибки. Решение состоит в том, чтобы отслеживать с объектом и двумя функциями идентификатор и имя:

//Контроллер

 $scope.vendors = [
    {
      "public-id": "1234",
      "name": "stugg"
    },
    {
      "public-id": "4321",
      "name": "pugg"
    }
  ];
  $scope.myVendor = {name: "pugg", id:""};

  $scope.updateMyVendorName = function () {
    var found = false,
    i = 0;
    while (!found && i < $scope.vendors.length)  {
      found = $scope.vendors[i]['public-id'] === $scope.myVendor.id;
      if (found) {
        $scope.myVendor.name = $scope.vendors[i].name;
      }
      i++;
    }
  }

  findVendorByName();

  function findVendorByName () {
        var found = false,
    i = 0;
    while (!found && i < $scope.vendors.length)  {
      found = $scope.vendors[i]['name'] === $scope.myVendor.name;
      if (found) {
        $scope.myVendor.id = $scope.vendors[i]['public-id'];
      }
      i++;
    }
  }

//шаблон

<select chosen class="form-control span6" ng-options="vendor['public-id'] as vendor.name for vendor in vendors" ng-model="myVendor.id" ng-change="updateMyVendorName()">

{{myVendor.name}}
  • 0
    Это работает для вас? Я все еще вижу заполнитель, а не pugg выбранного в плунжере, который вы связали.
  • 0
    Да, извините, я получил консольные ошибки в этих строках, и я забыл об актуальном вопросе. Проблема заключается в том, что вы используете свойство name в качестве модели, но опции выбора являются треком для public-id. Таким образом, вы должны перебрать варианты, чтобы найти тот, который соответствует, я обновлю плункер
Показать ещё 2 комментария

Ещё вопросы

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