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

Поскольку вы не предоставили никакого кода. Вот мои мысли по этой проблеме.

Когда вы перечисляете компонент в навигаторе, будь то StackNavigator или DrawerNavigator, компонент получит некоторые реквизиты, предоставленные самим классом навигации.

Имеется возможность отправлять больше параметров в качестве реквизита для этих объектов навигации. Среди этих дополнительных параметров может быть ваш единственный метод toggleDrawer().

Кроме того, если ваш родительский компонент указан в навигаторе, а дочерний компонент - нет. Вам нужно будет явно передать навигационные реквизиты (this.props.navigation) на дочерний компонент. Итак, когда вы находитесь внутри этого дочернего компонента, все, что вам нужно сделать, это получить эти реквизиты и вуаля, это сделает нужным!

Надеюсь, что это прояснит вам все.

EDIT --- для вашего третьего комментария

Предположения:

  1. Родительский компонент указан как DrawerNavigator({ParentScreen: {screen: ParentScreen}})
  2. В компоненте <Route/> ParentScreen.

Итак, что вы можете сделать, это передать навигационные опоры по умолчанию на компонент <Route>.

Как - <Route navigation={this.props.navigation} /> и в дочернем компоненте вы можете вызвать this.props.navigation.toggleDrawer() в любом событии onPress() любого элемента.

-2
задан Barmar 19 January 2019 в 18:27
поделиться

1 ответ

Вы сбрасываете option = "" каждый раз через цикл $.each. Если выбранная опция не соответствует последнему элементу в listaModelos, вы не получите желаемого значения <option>.

Вам следует инициализировать переменную перед циклом. Кроме того, вы должны прекратить цикл, когда найдете выбранную опцию, так как нет смысла продолжать ее поиск. Вы можете завершить цикл $.each, вернув false из функции обратного вызова.

  var option = "";
  $.each(listaModelos, function(indexInArray, modelo) {
    if (id == modelo.Tipo_PecaID) {
      option = '<option value="' + modelo.id_peca_modelo + '">' + modelo.ds_descricao + '</option>';
      return false;
    }
  });

Следующая проблема заключается в следующем коде:

  $('.selectpicker.form-control.model').append(option);
  $('.selectpicker.form-control.model').selectpicker('refresh');

Это добавляет опцию ко всем .model селекторам выбора, а не только к одному после текущего .peca , Измените это на:

$(this).closest(".row").find(".selectpicker.form-control.model")
    .append(option)
    .selectpicker('refresh');

Вам также необходимо использовать e.stopPropagation() в обработчике событий change. Плагин bootstrap-select копирует класс peca из добавляемой оболочки <select> в добавляемую оболочку <div>, поэтому событие попадает в DIV, но $(this).val() там не работает.

Рабочая скрипка

0
ответ дан Barmar 19 January 2019 в 18:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: