Поскольку вы не предоставили никакого кода. Вот мои мысли по этой проблеме.
Когда вы перечисляете компонент в навигаторе, будь то StackNavigator
или DrawerNavigator
, компонент получит некоторые реквизиты, предоставленные самим классом навигации.
Имеется возможность отправлять больше параметров в качестве реквизита для этих объектов навигации. Среди этих дополнительных параметров может быть ваш единственный метод toggleDrawer()
.
Кроме того, если ваш родительский компонент указан в навигаторе, а дочерний компонент - нет. Вам нужно будет явно передать навигационные реквизиты (this.props.navigation
) на дочерний компонент. Итак, когда вы находитесь внутри этого дочернего компонента, все, что вам нужно сделать, это получить эти реквизиты и вуаля, это сделает нужным!
Надеюсь, что это прояснит вам все.
EDIT --- для вашего третьего комментария
Предположения:
DrawerNavigator({ParentScreen: {screen: ParentScreen}})
<Route/>
ParentScreen
. Итак, что вы можете сделать, это передать навигационные опоры по умолчанию на компонент <Route>
.
Как - <Route navigation={this.props.navigation} />
и в дочернем компоненте вы можете вызвать this.props.navigation.toggleDrawer()
в любом событии onPress()
любого элемента.
Вы сбрасываете 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()
там не работает.