0

我的主干函数我想在条件下触发一个方法,该函数已经在对象中,在events声明中由用户单击添加,效果很好。但是根据条件,我的点击事件根本没有触发..

这是我的代码:

在视图部分:

            events:{
                        "click .mainMenu a":"listTrigger" // this is work on user click
                    },
        initialize:function(params){
                    _.bindAll(this);
                    var that = this;
                    this.listItems = ["projectName","assignedTo","projectName"];
                    this.classItems = ["projectName","assignedTo","sortBy"];
                    this.listCatch = [];this.boardCatch=[];
                    this.params = params,
                    this.filterState = false,
                    this.listTriggerElement = "";//i am initiating a element variable

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

                    this.collection = new singleton.collection;
        //          this.collection.on('reset', this.render);   
                    this.collection.on('add', this.render); 
                    this.collection.on('remove', this.render);  
                    var dataFetcher = function(){
                        that.collection.fetch({update:true,remove:true});
                        appDataFetcher = setTimeout(dataFetcher,10000);
                    };
                    var appDataFetcher = setTimeout(dataFetcher,0); 
                },
render:function(){
            this.listCollection     = this.collection;
            this.boardCollection    = this.collection;
            this.filterCollection   = this.collection;
            this.listCollect();
this.filterState != true ? this.boardViewSet() : this.listTriggerElement.trigger('click'); 
// checking by condition and triggering click.. not working
            },

    listTrigger:function(e){    //it should work by user click as well data udpate..    
                e.preventDefault();
                this.listTriggerElement = $(e.target);
                var filterKey = $(e.target).text();
                var category = $(e.target).parents('ul').prop('class');

                var collect = _.filter(this.filterCollection.models, function(model){
                    return model.get(category) === filterKey;
                });

                var newColl = new singleton.collection();
                newColl.reset(collect);

                this.boardCollection = newColl;
                this.boardViewSet();
                this.filterState = true;
            }

我该如何解决这个问题..?

4

1 回答 1

2

“.mainMenu a”元素是否在此视图的范围内?

如果不是,您需要将“el”对象设置为您的父容器,例如:

http://jsfiddle.net/C9wew/4347/

 myView = Backbone.View.extend({
     el: "#container",
    render: function(){
    },
    events: {
        "click button": "doSomething"  
    },
    doSomething: function( event ){
        console.log(345345);
    }
});

new myView();

然而,如果您没有定义“范围”(el),它将不起作用。

于 2013-02-15T10:40:38.117 回答