Удаление вида из DOM в магистрали

0

Я искал и нашел некоторые подсказки о том, как удалить вид из DOM, такой как Zombie RUN! и другие. После этого я выбрал одну из них, чтобы сделать здесь ссылку.

Вот мое мнение:

var HomeView = Backbone.View.extend({
   initialize: function() {
       myCart1.updateQtyLabel("qtyCart");
       window.localStorage.setItem("User",serializeObjToJSON(customer));
   },
   el: '#webbodycontainer',
   events : {
       "click #addToCart" :  function(){
           myCart1.addToCart(newItem);
           myCart1.updateQtyLabel("qtyCart");
           $("#containernewpromotion").html(promotionItem);
       }
   },
   render : function(){
       this.$el.html(homePanel);
       $("#containernewpromotion").html(promotionItem);
   },
    remove: function() {
        this.undelegateEvents();
        this.$el.empty();
        this.stopListening();
        return this;
    }
});
return HomeView;

И это мой маршрутизатор:

app_router.on('route:home', function( ){
    var homeView = new HomeView();
    homeView.remove();
    homeView = new HomeView();
    homeView.render();
 });

Но взгляд все еще остается в моем DOM. Подумайте над этим вопросом. Благодарю.

  • 0
    Вы удаляете его перед вставкой в DOM.
Теги:
backbone.js

1 ответ

2

Проблема здесь:

app_router.on('route:home', function( ){
    var homeView = new HomeView();
    homeView.remove();
    homeView = new HomeView();
    homeView.render();
 });

В строке №3 вы вызываете метод remove(). В строке # 4 вы создаете экземпляр снова и в строке # 5, вы вставляете в DOM.

Вы должны вызвать remove after render. Однако, если вы сразу вызываете remove, вы можете ничего не увидеть в DOM. Ниже приведен пример удаления элементов из DOM при нажатии на него

var HomeView = Backbone.View.extend({
.....
   events : {
       "click #addToCart" :  function(){
           myCart1.addToCart(newItem);
           myCart1.updateQtyLabel("qtyCart");
           $("#containernewpromotion").html(promotionItem);
       },
       'click': 'remove'
   },
......
});

Теперь вы можете сделать это следующим образом:

app_router.on('route:home', function( ){
    var homeView = new HomeView();
    homeView.render();
 });

Теперь вы должны увидеть элементы на странице. Когда вы нажимаете на них, их следует удалить.

  • 0
    Так, где я должен вызвать функцию remove() моего HomeView ?
  • 0
    в моем коде вы видите, что я добавил строку 'click': 'remove' . Вы можете вызывать метод удаления из любого другого места, homeView в вашем контексте homeView переменная homeView .
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню