2013-03-11 5 views
0

Après avoir supprimé une vue de backbone que les vues EL est également supprimé ce qui est un peu un problème pour moi. La façon dont mon point de vue est la configuration est que j'ai un fichier PHP qui charge dansRecharger une vue Backbone après qu'elle a été supprimée?

<div id="main_destinations" class="trip_container"></div> 

et cet emballage a un modèle chargé. Le problème que j'ai est que lorsque je supprime cette vue, je supprime également cette enveloppe et je ne suis pas sûr de ce que je devrais faire. Y a-t-il un moyen de garder l'emballage? Dois-je recréer cette enveloppe vide et la charger dans le gabarit. Quelle est la meilleure façon de gérer cela? Ma compréhension est que le EL doit déjà être dans le DOM avant de charger une vue et d'attacher des événements donc je ne comprends pas pourquoi la suppression d'une vue supprime son EL.

MISE À JOUR - COMMENT J'ENLEVER UNE VUE:

if(typeof mysite.city != "undefined") 
{      
    mysite.city.View.prototype.remove.call(cityViewValue); 
} 

Comment j'instancier mon avis:

cityViewValue = new mysite.city.View(page, country, city, city_id); 
+0

Pouvez-vous s'il vous plaît poster votre code comment supprimez-vous votre point de vue? Il n'est pas nécessaire que votre élément EL soit présent dans le DOM au moment de la création de la vue. Si vous ne passez pas el, le backbone est assez intelligent pour créer un div vide comme el jusqu'à ce que vous spécifiez une variable. – sachinjain024

+0

@blunderboy - Voir ma mise à jour. –

Répondre

0

Voici la définition de Backbone.View.Prototype.remove

function() { 
    this.$el.remove(); 
    this.stopListening(); 
    return this; 
} 

Il est clairement montré, il supprime el élément de DOM. Voici une autre solution à votre problème: Créez une fonction d'actualisation dans la vue, supprimez l'élément que vous voulez supprimer de votre vue et chargez le modèle dans votre vue.

refresh: function() { 
    this.$('.dynamic-data').remove(); //Assuming your element to be removed has class dynamic-data and is unique in this view. Otherwise we will write specific selector here 
    var html = ; // Load template here 
    $(this.el).append(html); 
} 
Questions connexes