0

我每 10 秒从服务器获取数据,在此,我得到 3 种类型的数据,

在超时调用之后,我正在删除现有数据,我可以看到控制台显示数组已清除,但元素仍保持附加。

我怎样才能清除 DOM 中的两个元素并取消绑定..

我的关闭函数被保持调用,但元素不会从 DOM 中删除。

我的单一观点:

singleton.view = Backbone.View.extend({
    tagName     :'article',
    template0   : function(value){
                    var label = value === 0 ? "projectName" : value === 1  ? "assignedTo" :"projectName";
                    return _.template("<a href='#'><%= "+label+" %></a>");
                },
    template1   : _.template($('#boardTemplate').html()),
    initialize  :function(prams){
        this.template = this['template'+0](prams.subTempNo);
    },
    close:function(){
        console.log('clean up') // i am getting consoled
        this.unbind();// i am unbinding
        this.remove();// i am removing
    },
    render:function(){
        var temp = this.template;
        this.$el.html(temp(this.model.toJSON()));
        return this;
    }
}); 
return singleton.view;

在意见中:

listViewAppender:function(item,i){
            var listElement = new singleton.view({model:item,tempNo:0,subTempNo:i,tagName:'li'});
            listElement.close(); // whenever i call the new instance i am removing old stuff..
            this.$el.find('.'+this.classItems[i]).append(listElement.render().el);
        },

我该如何解决这个问题..任何正确的方法pelase..

4

2 回答 2

0

好的,只是一个快速的返工......你将不得不对其进行测试。评论发生了什么,我将更正下面的代码。

你能试一下吗

listViewSet:function(key,i){
    var l = this.listCatch.length;
    if(l > 0){
        for (var i = 0; i < l; i++) {
            console.log(this.listCatch[i]);
            this.listCatch[i].remove();
         }
    }

    this.listCatch = [];

    _.each(this.listCollection.models, function(model){
        that.listViewAppender(model,i); //setting agian.
    });
},

listViewAppender:function(item,i){
    var listElement = new singleton.view({model:item,tempNo:0,subTempNo:i,tagName:'li'});
    console.log(listElement);
    this.$el.find('.'+this.classItems[i]).append(listElement.render().el);
    this.listCatch[i] = listElement;
},
于 2013-02-07T12:03:05.000 回答
0

我浏览了我的函数,我在this.listCatch[i] = listElement;错误声明的行中发现了问题。

后来我手动声明了数组,它工作正常。在我的初始化中,我引入了 3 个数组,现在我需要它工作正常。

this.listCatch = [];


            for(var i=0;i<this.listItems.length; i+=1){
                this.listCatch[i] = [];
            }

所以在将模型推送到数组之前,现在引入的数组解决了这个问题。

于 2013-02-08T05:55:47.877 回答