点击事件不会触发

时间:2013-02-15 09:37:36

标签: jquery backbone.js backbone-events

我的骨干函数我想在条件上触发一个方法,该函数已经在对象内,在用户点击添加的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;
            }

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

1 个答案:

答案 0 :(得分: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),它将不起作用。