Ionic 2 twitter встроенная временная шкала

70
8

Я пытаюсь использовать встроенную временную линию twitter в моем приложении ionic 2. Пока у меня есть код, показанный ниже, однако после того, как пользователь покинет представление, линия времени исчезнет? Здесь что-то не хватает?

<ion-header>
<ion-navbar>
<button ion-button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>Social Media</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<a class="twitter-timeline" href="https://twitter.com/hashtag/amyawards2017" data-widget-id="837781109337436160">#amyawards2017 Tweets</a>
<!--<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>-->
</ion-content>

export class SocialMediaPage{
constructor(public navCtrl: NavController,
private loadingCtrl: LoadingController,private toastCtrl: ToastController,
private alertCtrl: AlertController,
public twitter: TwitterService) {

}

ngAfterViewInit() {
!function(d,s,id){
var js: any,
fjs=d.getElementsByTagName(s)[0],
p='https';
if(!d.getElementById(id)){
js=d.createElement(s);
js.id=id;
js.src=p+"://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js,fjs);
}
}
(document,"script","twitter-wjs");
}

}

спросил(а) 2017-03-08T00:27:00+03:00 3 года, 6 месяцев назад
1
Решение
105

замените ngAfterViewInit на ionViewDidEnter, например

ionViewDidEnter() {
!function(d,s,id){
...
}
(document,"script","twitter-wjs");
}

ngAfterViewInit вызывается только при инициализации представления, тогда как ionViewDidEnter вызывается каждый раз, когда представление перемещается (с другого представления)

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

HTML:

<ion-segment [(ngModel)]="model" (ionChange)="segmentChanged()">

TS:

updateTwitter() {
!function(d,s,id){
...
}
(document,"script","twitter-wjs");
}
segmentChanged() {
this.updateTwitter();
}
ionViewDidEnter() {
this.updateTwitter();
}

ответил(а) 2018-02-19T19:57:00+03:00 2 года, 7 месяцев назад
41

Замените свой ngAfterViewInit этим.

!function(d,s,id){
var js: any,
fjs=d.getElementsByTagName(s)[0],
p='https';
js=d.createElement(s);
js.id=id;
js.src=p+"://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js,fjs);
}
(document,"script","twitter-wjs");

Я не знаю, работает ли это для вас, но для моего приложения это сработало. Надеюсь, это сработает для вас.

ответил(а) 2017-06-01T12:39:00+03:00 3 года, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема