2015-04-02 13 views
7

Denetleyici içeriğine eşzamansız olarak bağlamak istediğim $ .getJSON ile bazı verileri getiriyorum. Benim rotada bu ile geldim - çalışır, ancak onunla mutlu değilim: örneğin, elimden,

setupController: function(controller, model) { 
    this._super(controller, model); 
    Em.RSVP.Promise.cast(Em.$.getJSON((this.get('ENV.apiBaseURL')) + "https://stackoverflow.com/users/current/live_matchday_stats")).then((function(_this) { 
    return function(s) { 
    return _this.controller.set('matchdayStats', Em.Object.create(s)); 
    }; 
} 

Sonra benim şablonunda, kullanım:

Foo: {{matchdayStats.foo}} 

Ve iyi çalışıyor. Bunu yazmanın daha iyi bir yolu var mı? (Belki de söz vermez oyuncular ve Em.Object oluşturma olmadan) - Ems. GetJSON'u bir model kancaya koyarsam bu otomatik olarak çalışır.

+0

'Em. $ GetJSON()' yöntemi varsayılan olarak bir Promise döndürür, gerek yok. Ember [kontrolörlerden uzaklaşmayı] planladığından (http://discuss.emberjs.com/t/ember-2-0-moving-away-from-controllers/6728), muhtemelen bunu sadece Rotanıza eklemelisiniz. 'model' kanca. Olmadığın herhangi bir sebep var mı? – trentmwillis

+0

Modelim başka bir şey olduğu için ve bu veriler modelle alakası olmayan bir şey, ancak yine de onu yüklemem ve şablonda göstermem gerekiyor. –

cevap

1

Akraba bir DS.PromiseObject

var matchdayStats = DS.PromiseObject.create({ 
    promise: Em.$.getJSON((this.get('ENV.apiBaseURL')) + "https://stackoverflow.com/users/current/live_matchday_stats") 
}); 

controller.set('matchdayStats', matchdayStats); 

Bu Kor Veri erişen yoludur/görüntüler nesneleri ve şablonlar bu nesnelere özelliklerini kullanabilirsiniz.

+0

Bunu bir model olarak kullanmak istemiyorum çünkü benim modelim zaten başka bir şey. –

+0

Maalesef cevabımı güncelleyeceğim – jmurphyau

İlgili konular