私のバックボーン関数は、条件付きのメソッド、すでにオブジェクト内にある関数を、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;
}
どうすればこの問題を修正できますか..?