2017-04-16 13 views
9

मैं आयनिक टैब का उपयोग कर रहा हूं। कुछ टैब डेटाबेस से उत्पन्न कर रहे हैं (माउस के बिना लोगों को)आयनिक 2: नया डायनामिक टैब जोड़ने के बाद टैब रीफ्रेश करें

ionic dynamic tabs

अब जब मैं एक नया टैब जोड़ सकते हैं और सरणी मैं 3 गतिशील टैब मिलना चाहिए ताज़ा करें। इसके बजाय मेरे पास 5 (2 पिछले और 2 पिछले बनाए गए टैब वाले 2 पिछले हैं) सरणी के बावजूद सही ढंग से 3 ऑब्जेक्ट्स हैं।

Add dynamic tab

Dynamic tab added

[वस्तु, वस्तु, वस्तु]

enter image description here

तो यहाँ संबंधित कोड (टैब घटक एक घटना है कि एक टैब निर्माण के लिए सुनने है):

// tabs.ts 

import { Component } from '@angular/core'; 
import { Events } from 'ionic-angular'; 
import { DatabaseService } from "../../providers/database.service"; 

import { ItemsPage } from '../items/items'; 
import { ContactPage } from '../contact/contact'; 
import { HomePage } from '../home/home'; 
import { CategoryPage } from '../category/category'; 

@Component({ 
    templateUrl: 'tabs.html' 
}) 
export class TabsPage { 

    categories: any = []; 

    tab1Root = HomePage; 
    tab2Root = CategoryPage; 
    tab3Root = ItemsPage; 
    tab4Root = ContactPage; 

    constructor(public databaseService: DatabaseService, public events: Events) { 
     this.events.subscribe('category:created',() => { 
     this.refreshTabs(); 
    }); 
    } 

    ngOnInit() { 
    this.refreshTabs(); 
    } 

    refreshTabs() { 
    this.databaseService.getCategories().then(categories => { 
     this.categories = categories; 
     console.log(this.categories); // [Object, Object, Object] 
    }); 
    } 

} 

इसलिए जब भी मैं एक टैब जोड़ता या संपादित करता हूं, तो मैं कॉल करता हूं:

this.events.publish ('श्रेणी: बनाया गया');

tabs.html:

<ion-tab [root]="tab2Root" tabTitle="{{ category.name }}" [rootParams]="category.id" *ngFor="let category of categories"></ion-tab> 

किसी भी विचार क्यों टैब पर दृश्य सही नहीं है?

अद्यतन:

यह का उपयोग कर this.category.push({id: 1, name: 'a category name'}) काम कर रहा है, लेकिन मैं नहीं बल्कि पूरे सरणी से ताज़ा होता था तो मैं जिस तरह से मैं एसक्यूएल क्वेरी से यह चाहते आदेश कर सकते हैं लगता है। // GitHub: -

Subject has been posted on ionic forum as well

+1

गतिशील टैब खुला मुद्दा https://github.com/driftyco/ionic/issues/10632 और https हो रहा है। com/driftyco/आयनिक/मुद्दों/10805 –

+0

बमर ... इस जानकारी के लिए धन्यवाद। क्या समाधान मेरे अपने टैब को लागू करना है? मैं वास्तव में इस समाधान का आनंद नहीं लेता लेकिन मुझे लगता है कि मेरे पास कोई अन्य विकल्प नहीं है, मैं कुछ हफ्तों तक इंतजार नहीं कर सकता। – Brieuc

+0

क्या आपने इसके बजाय आयनिक पेज लाइफसाइकिल की कोशिश की है? https://saniyusuf.com/ionic-by-component-page-lifecycle/ निर्माता में आप श्रेणी की सदस्यता लेते हैं: इवेंट बनाया गया। क्या आपको सदस्यता रद्द करने की आवश्यकता है और रीफ्रेश में फिर से सब्सक्राइब करना होगा, सेवा कॉल के बीच में सैंडविच किया गया है? – JGFMK

उत्तर

0

कोशिश ट्रिगर परिवर्तन का पता लगाने के लिए मैन्युअल रूप

import { Component, NgZone } from '@angular/core'; 
import { Events } from 'ionic-angular'; 
import { DatabaseService } from "../../providers/database.service"; 

import { ItemsPage } from '../items/items'; 
import { ContactPage } from '../contact/contact'; 
import { HomePage } from '../home/home'; 
import { CategoryPage } from '../category/category'; 

@Component({ 
    templateUrl: 'tabs.html' 
}) 
export class TabsPage { 

    categories: any = []; 

    tab1Root = HomePage; 
    tab2Root = CategoryPage; 
    tab3Root = ItemsPage; 
    tab4Root = ContactPage; 

    constructor(public databaseService: DatabaseService, public events: Events, private ngZone: NgZone) { 
     this.events.subscribe('category:created',() => { 
     this.refreshTabs(); 
    }); 
    } 

    ngOnInit() { 
    this.refreshTabs(); 
    } 

    refreshTabs() { 
    this.databaseService.getCategories().then(categories => { 
    this.ngZone.run(() => { 
     this.categories = categories; 
     console.log(this.categories); // [Object, Object, Object] 
    }); 
    }); 
    } 

} 
+0

मुझे याद है कि मैंने NgZone के साथ कुछ करने की कोशिश की और यह उस समय काम नहीं करता था। क्या आपने इसका परीक्षण करने की कोशिश की है? चीयर्स! – Brieuc

संबंधित मुद्दे