2016-03-31 20 views
2

ve HTML onlar DOM değişiklik yapmadan önce, o ekleyebilir veya girdi ve outpus kaldırmak demek olduğunu söylemek, senunbindAll ve arayarak Parlak söylememe gerek bindAll: bir kenar çubuğu ve kullanıcı seçtiği şeye bağlı bilgileri görüntüleyen bir ana kap üzerinde seçkin:Sınır Parlak unbindAll ve bindAll sadece Parlak sitesinde eleman

function modifyDom() 
{   
    Shiny.unbindAll() 
    insertInputsAndOutputs() 
    removeOtherInputsAndOutputs()  
    Shiny.bindAll() 
} 

şey benim web uygulaması 2 bölümden oluşur olmasıdır. Ve sorun şudur:

  1. varsayalım, kullanıcı zaten madde 1 seçti, böylece yapı 1 kap görüntülenir
  2. kullanıcı madde 2, yapı 1 modifyDom çağrıldığında silinir ve en son edilir seçtiğinde Satır Shiny.bindAll(), yeniden başlatılacak kenar çubuğunun seçilmesine bile neden olur, bu nedenle öğe 1'i seçer ve yapı 1 yeniden görüntülenir.

Dolayısıyla benim sorum: Tüm nesneleri ancak belirli bir HTML öğesinin içinde var sadece olanları bağlantı kesme değil Parlak bir yolu var mı.

cevap

3

Daha önce Parlak ile çalışmak hiç, ama this link göre ve its Github repo arama, hem unbindall ve bindall işlevleri de şu şekilde kullanılabilir:

unbindall(element)

bindall(element)

element öğesinin bir DOM öğesi olduğu anlaşılıyor (document.getElementById işlevinden döndürülen değer veya jQuery eşdeğeri $('#element')[0]).

Yani bunun gibi başka bir fonksiyon yazabiliriz:

function modifyDomByElement (element) { 
    Shiny.unbindAll(element); 
    insertInputsAndOutputs(); 
    removeOtherInputsAndOutputs(); 
    Shiny.bindAll(element); 
} 

Ve (Single responsibility principle unutmayın) göndermeden olarak görev modifyDom işleyişini korur.