Tworzę aplikację z jedną stroną, a ja jestem całkiem nowy w zakresie szkieletu. Mam problem z tworzeniem wielu widoków, które używają tego samego opakowania-div.Usunięcie widoku szkieletu powoduje, że el
Moja konfiguracja:
Dodałem ścisłą funkcję do wszystkich widokach:
Backbone.View.prototype.close = function(){
this.remove();
this.off();
if (this.onClose){
this.onClose();
}
}
Mam otoki DIV gdzie chcę, aby uczynić poglądy, usunąć je i czynią nowe. Więc moja SetupView wygląda następująco:
app.SetupView = Backbone.View.extend({
el: '#my_view_wrapper',
...
});
Z funkcji gdzie mogę zamienić widoki zamknąć obecny (otwarty) Widok tak:
var v = this.model.get('view');
v.close();
Pytanie
Moim problemem jest to, że Mam wiele widoków przy użyciu tego samego opakowania-div. Ale kiedy zamykam widok, to opakowanie-div wydaje się być usunięte, a następny widok, który próbuję utworzyć, nie może znaleźć tego elementu div.
Sądzę, że istnieje proste rozwiązanie? Chcę ponownie użyć tego samego opakowania i usunąć tylko jego widok, a nie samego opakowania.
'remove' usuwa element z DOM. Ale myślę, że źle zrozumiałem "el". Myślałem, że to właśnie miejsce zostało wstrzyknięte do nowego elementu, ale teraz nauczyłem się, że staje się on częścią nowego elementu, i dlatego jest usuwany, gdy nazywam 'remove'. – swenedo
Dobrze. Generalnie lepiej jest pozwolić każdemu widokowi zarządzać własnym 'el': widok powinien tworzyć jego' el', robić rzeczy do niego i usuwać go po usunięciu widoku. Wywołujący umieszcza widok 'el' w kontenerze, który kontroluje wywołujący. Nie używanie ponownie elementów DOM dla wielu widoków pomaga uniknąć wielu problemów. –
@muistooshort - dobra rada. nigdy o tym nie myślałem - ma sens. Dziękuję Ci. – cheshireoctopus