3-сегментные вкладки Ionic и слушатели BluetoothSerial - PullRequest
0 голосов
/ 21 мая 2018

У меня в приложении app.component есть приложение с прослушивателем подписки bluetoothserial на подписке (возможно, это плохое размещение, но мне нужно, чтобы оно было доступно из всех приложений).Есть страница с сегментами, в которой есть несколько пользовательских прослушивателей событий, которые я использую для передачи данных от Bluetooth-прослушивателей.

Я попытался сделать там два сегмента.И это работало так:

Страница загружается с открытым сегментом по умолчанию.Он получает данные от Bluetooth правильно.Если я пытаюсь изменить сегмент, страница перестает отвечать, пока я не отправлю больше данных по Bluetooth.Затем сегмент меняется.И если я попытаюсь изменить его обратно, ничего не произойдет, пока я не нажму где-нибудь на странице.

Весь код работает хорошо, если я не использую сегменты, и все в порядке, когда я использую рандомизаторы вместо прослушивателей Bluetooth.

При необходимости предоставит код.

1 Ответ

0 голосов
/ 21 мая 2018

Если вы хотите, чтобы ваши данные были доступны из любого места в приложении, вам нужно создать провайдера, которого вы затем сможете внедрить во все ваши компоненты.И лучше всего, если вы создадите тему, на которую вы можете подписаться где угодно в вашем приложении.Этот субъект испускает значения, которые он получает от BT.

bt-prodiver.ts:

@Injectable()
export class BTProvider {
    public dataSubject: Subject<any> = new Subject();
}

Вам необходимо вставить его в app.module.ts:

@NgModule({
providers: [
    BTProvider
]
})
export class AppModule {}

В компонентах вы затем подписываетесь на свою тему (которая генерирует значения где-то в вашем коде), используя this.dataSubject.next (data);

component:

ionViewDidLoad() {

    this.btProvider.dataSubject
            .subscribe((data) => {
              console.log("Got BT data");
              console.log(data);
            })
  }

tl; dr;Воспользуйтесь услугой!

...