2013-02-12 13 views
6

W poniższym Layout dodaję CollectionView, aby wyświetlić listę SELECT w obrębie onRender. Natychmiast po tym używam funkcji mieszania ui, aby włączyć lub wyłączyć wszystkie kontrolki w widoku. To nie działa dla SELECT generowanego przez new App.View.Categories.Problemy z haftowaniem interfejsu użytkownika z układem marionetek kręgosłupa

Czy powinien? A może hash interfejsu użytkownika nie działa pod numerem Regions w obrębie numeru Layout?

App.View.UploadFile = Backbone.Marionette.Layout.extend({ 
    template: '#upload-file-template', 
    regions:{ 
     category: 'td:nth-child(4)' 
    }, 
    ui:{ 
     inputs: 'textarea, select, .save' 
    }, 
    onRender: function(){ 
     this.category.show(
      new App.View.Categories({ 
       collection: App.collection.categories 
      }) // generates the SELECT list 
     ); 

     console.log(this.ui.inputs); // Length 2. Missing select. 
     console.log(this.$('textarea, select, .save')); // Length 3 

     this.ui.inputs.prop(
      'disabled', (this.model.get('upload_status')!='staged') 
     ); 
    } 
}); 

Odpowiedz

11

Powinno działać zgodnie z oczekiwaniami. Kod mowa w źródle Marionetek jest tutaj: https://github.com/marionettejs/backbone.marionette/blob/master/src/marionette.itemview.js#L49-L51

Wezwanie do bindUIElements() co przekształca ui hash do obiektów selektora jQuery, i nazywa się tuż przed metoda onRender nazywa.

Czy widzisz błędy? Czy też selektor po prostu nie zwraca niczego i nie ma wpływu na żywioły?


Aktualizacja:

Ach! Oczywiście ... Nie zwracałem uwagi na twój kod wystarczająco blisko. Masz rację, że selektory elementów interfejsu użytkownika mają miejsce przed dodaniem widoku podrzędnego do regionu. Nigdy wcześniej nie wpadłem na tę sytuację ... ale wydaje się, że to coś, co chcielibyśmy naprawić/wesprzeć.

Na razie najlepszym rozwiązaniem, które mogę zasugerować, byłoby wywołanie "this.bindUIElements();" na samym końcu twojej metody onRender. Zmusiłoby to elementy Ui do ponownego połączenia z selektorami.

Dodam również problem do listy problemów z Githubem, aby znaleźć lepsze rozwiązanie tego problemu. Nie wiem, kiedy będę mógł się do tego dostać, ale to przynajmniej umieści to na liście rzeczy do naprawienia.

+0

Nie ma błędów. Dodałem kilka przykładowych plików console.logs powyżej. Selektor opuszcza zaznaczenie, ale zwraca pozostałe dwa elementy. Jak widać po drugim pliku console.log, ten sam selektor zawinięty w $ działa. – Bart

+0

Patrząc na źródło, myślę, że widzę problem. Te elementy są powiązane PRZED dodaniem elementu SELECT w onRender. Być może dodanie takich regionów w onRender nie jest najlepszą praktyką. Czy masz inny wzór do polecenia? – Bart

+0

Dziękujemy za aktualizację! – Bart

Powiązane problemy