2016-03-19 10 views
0

5 kategoriyi görüntüleyen bir yolum var. Her kategorinin sadece bir çocuğu olması amaçlanmıştır. Bir alt rota oluşturdum ve seçilen kategori türü kimliğini sorguparametre olarak geçirdim. Çocuk yolu modelinde() ben, bu tür OR veya hiçbir şeyle eşleşen kaydı döndürmek için arka uçu sorgulamak için store.queryRecord() parametresini kullanırım. Bu bir kayıt olduğu sürece iyi çalışıyor. Çalıştığım sorun, bir çocuk kaydına sahip olmayan bir kategori seçmeme dayanıyor. QueryRecord'dan hiçbir şey iade edilmediğinde, şablon önceki verileri görüntülemeye devam eder. Ağ isteğini başarıyla tamamlandığını görebilir ve boş bir dizi döndürür. Sayfayı yenilediğimde şablon doğru bir model verisi olmadığını gösterir.Model döndürdüğünde oluşturulan bir şablonu yenileyin store.queryRecord

Model artık bir kayıt olmadığında şablonu yenilemenin bir yolunu bulmaya çalışırken bütün gün uğraşıyorum. Geriye doğru gideceğimi hissediyorum, herhangi bir işaretçi için minnettar olurdum.

Veli:

export default Ember.Route.extend(AuthenticatedRouteMixin,{ 
    user: Ember.inject.service('user'), 

    model() { 
    var user = this.get('user'); 
    return this.store.findAll('strategic-priority',{ location: user.get('selectedLocationId'), year: user.get('selectedYearId') }); 
    } 
}); 

HBS 
{{#each model as |strategic-priority|}} 
    {{#link-to 'priority-area.goal' (query-params priorityArea=strategic-priority.id) class="list-group-item"}} {{strategic-priority.label}} - {{strategic-priority.text}} {{/link-to}} 
{{/each}} 

Çocuk:

{{#if hasModel}} ile bir kategori uygun şablonu sarmak için ne deneyebilirsin
export default Ember.Route.extend({ 
    user: Ember.inject.service('user'), 
    queryParams: { 
    priorityArea: { 
     refreshModel: true, 
     replace: false, 
    } 
    }, 

    model(params) { 
    Ember.Logger.debug(params); //I see this is in the console so I know this code is being called each time 
    var user = this.get('user'); 
    return this.store.queryRecord('goal',{ location: user.get('selectedLocationId'), year: user.get('selectedYearId'),priority: params.priorityArea}); 
} 
}); 
+0

Çocuk kayıtlarından bahsediyorsunuz. Yani bir 'kategori' modeliniz var ve 'hasMany()' öğeleri gibi bazı ilişkisel verileriniz var mı? Projenize açık bir github bağlantınız veya kodunuzu görebileceğimiz jsbin/ember twiddle var mı? – Zoltan

+0

Dürüst olmak gerekirse hasMany'i nasıl kullanacağımı anlamıyorum. Bu durumda, teoride her bir kategori anne çocuklara sahiptir, ancak sadece belirli parametrelere uyan çocukları göstermek istiyorum ve ilk önce kullanıcı onları oluşturana kadar hiçbir çocuk olmayacak. Ben bir örnek oluşturabileceğimi düşünmüyordum çünkü queryRecord kullanıyordum ama daha önce hiç kavramadığını duymamıştım, bir şans vereceğim. Teşekkürler! – HappyDude

cevap

0

için denetleyicisi sonra

{{#if hasModel}} 
    ... your template ... 
{{/if}} 

ve benzeri Yani mutlaka benim geçici çözüm store.query yerine kullanmak modelini değiştirmek oldu queryRecord'dan. Şablonumda sadece bir kayıt beklemiş olmama rağmen bir {{#each model as | xx |}} yaptım.

Ayrıca, çoğu durumda durumu hasMany kullanarak da önleyebildim. Arka uçtaki verileri toplamak için biraz hantal (en azından php ve zf2 ile beceri seviyemde) ama sonunda oldukça güzel çalışıyor gibi görünüyor.

Tavsiye ettiğiniz için teşekkür ederiz.

0

. Bu Doğru cevap ama eğer bilmiyorum rotanız

hasModel: Ember.computed.notEmpty('model') 
+0

Bunu bir şans verdim ama aynı konuya girdim. Şablona bir {{log hasModel}} ekledim ve arka uçtan bir model döndüren bir bağlantıyı tıklarsam doğru olarak gösterir. Bir model yüklemeyen bir bağlantıyı tıklarsam tekrar değerlendirilmiyor (günlüğünde görünmez). Tarayıcı yenileme düğmesini tıklatır ve sayfayı yeniden yüklerseniz, doğru olarak yanlış olarak günlüğe kaydeder. Bir model döndüren bir bağlantı seçtiğimde, ancak tersi çalışmazsa, doğru olarak güncellenir. – HappyDude

İlgili konular