2016-04-09 24 views
1

İki API çağrısı sonucuyla bir nesne oluşturmak ve kapsamı bağlamak istiyorum. Şimdiye kadarAçısal ES6 Denetleyici Kapsam

export class MainController { 
    constructor ($http) { 
    'ngInject'; 

    this.$http = $http; 
    this.getUsers(); 
    this.getPlayers(); 
    }; 

    getUsers() { 
    this.$http.get('/api/users').then((resp) => { 
     this.users = resp.data; 
    }) 
    }; 

    getPlayers() { 
    this.$http.get('/api/players').then((resp) => { 
     this.players = resp.data; 
    }) 
    }; 

} 

Şimdi main.players ve main.users yaparak görünümünde kullanıcıları ve oyuncuları erişebilir var. Yine de kapsamı çok karıştırıyorum. Her iki vaatin de çözülmesini ve sonra da bir değişkenin kapsamına nasıl bağlanmasını bekleyebilirim?

Ben $q.all() çalıştı ama erişemez self.users ya ben ya rota yüklenmeden önce kullanıcıların yüklemek veya beklemek $q.all kullanmak ngRoute üzerine resolve kullanıyor yapmanız gereken var self = this;

cevap

1

set bile self.players herşey yüklenmiş ve görünüm oluşturmayı tutun kadar: o zaman

export class MainController { 
    constructor ($http, $q) { 
    'ngInject'; 

    this.$http = $http; 

    this.isDone = false; 

    $q.all([this.getUsers(), this.getPlayers()]).then(() => this.isDone = true); 
    }; 

    ... 
} 

ve görünümü tarafında ng-if="myCtrl.isDone" kullanın. "$ Q.all" öğesinden geri aramada

+0

, 'player' ve' users' öğelerine nasıl erişebilirim? This.players' ve 'this.users'ye erişebilmeli miyim? – user2954587

+0

evet tabiki. Bunları geri bildirimlerinizde başka bir argüman olarak da iletebilirsiniz '(responses) => {this.isDone = true; console.log (yanıtlar)} – smnbbrv

İlgili konular