2016-03-31 11 views
0

farklı bir model ... vb aşağıda başka potansiyel desen hakkında tavsiyelerde ihtiyaçOmurga iletişim, ben arabulucu, olay toplayıcı kullanılarak, backbone.events okudum

, bu kötü olduğunu düşünüyorsunuz? ya da iyi mi? eğer iyi değilse, uyarılar/problemler nelerdir?

Bu 'desen' çok klasik bir soruyu yanıtlar. View1 üzerinde bir şey tıklattığınızda, View2 işlemek zorunda. View1 ve View2 bağımsızdır (bu bir alt ekran değildir). View1 ve View2 arasında bir "Eylemler" modülü kullanacağız (evet daha fazla veya daha az tepki/akı ile esinlenerek). İşte

pseudocode plandır: bir görünüm biz _Views dizisi kapalı belirli bir görünümü pop eylemlerde bir unsubsribe işlevini çağırır kaldırılır

View1: 
    initialize: 
     Actions.subscribe(this, 'view2); 

View2: 
    onclickwtv: 
     Actions.displayView2(); 

Actions: 
    this._Views = []; 
    subscribe(view, viewName): 
     this._Views[viewName] = view; 

    displayView2: 
     this._Views['view2'].render(); // or show or wtv function needed 

.

Bu şemanın amacı, görünümler arasındaki farklı potansiyel etkileşimler hakkında görünürlük sağlamaktır (bu etkileşimleri görmek için merkezi bir yere sahip olmadığınız bir olay toplayıcı yerine).

Düşüncelerinizi okumak için sabırsızlanıyorum!

+1

Sorunuz, Kod İnceleme, http://codereview.stackexchange.com için daha uygun olabilir. Bu, senin çözümün çok fazla bağlantı olduğunu düşünüyorum. Eylemler görünümleri başlattıysa ve onlara abone olsaydı daha iyi olurdu. Görüşler, Eylemlerin bilgisizliğini koruyabilir ve kimlerin dinlediğiyle ilgili olarak nezaketsiz bir şekilde yankı uyandırabilir. – 76484

+0

Görünümler çoğunlukla yönlendiricide ya da bazen üst görünümde başlatılır –

+0

Görüşleriniz için teşekkür ederiz. –

cevap

1

Ben View2 bir Toplayıcı nesne üzerinde bir olayı tetiklemek olurdu:

onclickwtv: function() { 
    Aggregator.trigger('wtc-click'); 
} 

Ve View1 bu olaya abone olurdu:

initialize: function() { 
    this.listenTo(Aggregator, 'wtc-click', this.render); 
} 

Eylemler çağrı böylece View1 Eylemler abone olması View1.render(), aynı şeyi elde etmenin sadece bir yoludur. Çözümünüzün üç karar verme aracı var, benim sadece iki tane var. Ve çözümüm görünüm durumlarının yönetimini gerektirmiyor - bir görünüm, .remove() yöntemi çağrıldığında Toplayıcıyı dinlemeyi durduracaktır.

+0

bu iyi. Bunu dün düşünüyordum. Ayrıca, bir tür veri değişimine ilişkin görüşlerin bir araya gelmesi gerektiğinde ne düşündüğünüzü tek bir ortak model olarak düşünmekteydim. –

+0

Bir keresinde her biri kendi modellerine sahip bir Filtreler görünümü ve bir Sayfa Görünümü görünümü aldım. Mevcut filtre değiştiğinde, mevcut sayfanın 1 olarak ayarlanması gerekiyordu. Bunu, filtre modeli ve Pagination modeline sahip bir ana modele örnek olarak ulaştım. Bu ana model, Filtre modelini dinlemek ve Pagination modelini ayarlamak için mantığı tuttu. – 76484