Приветствую! Начал изучать Backbone и столкнулся с такой проблемой (код ниже). При переходе на 'tasks_table/:id' вызывается событие 'TasksTable:show'. Это событие обрабатывается вьюхой App.Views.TaskTb. Обработчик вызывает самописную функцию getRequest, отсылающую запрос на сервер и получающую jsonp, и создает новую коллекцию.
Проблема следующая. При переходе на указанный урл (с загрузкой страницы) все работает верно. Но если вызвать событие без перезагрузки страницы, например вызовом navigate или ссылкой на анкор, то событие срабатывает 2 раза. Следующий раз 4 и так далее. Как исправить эту ошибку?
(function(){
window.App = {
Models: {},
Views: {},
Collections: {},
Router: {}
};
var vent = _.extend({}, Backbone.Events);
// Router
App.Router = Backbone.Router.extend({
routes: {
'': 'index',
'tasks_table/': 'tasksTable',
'tasks_table/:id': 'tasksTable'
},
index: function(){
console.log('index');
},
tasksTable: function(id){
vent.trigger('TasksTable:show', id);
}
});
// View
App.Views.TaskTb = Backbone.View.extend({
tagName: 'table',
initialize: function(){
vent.on('TasksTable:show', this.show, this);
},
show: function(id){
getRequest('GetTasksTable', 'project_type=' + id, function(data){
var view = new App.Views.TaskTb({collection: new App.Collections.TaskTb(data['data'])});
$('#tasks_table').append(view.render().el);
});
}
});
new App.Views.TaskTb();
new App.Router();
Backbone.history.start();
}());
И еще, при этом запросы выполняются значительно медленнее, чем напрямую к серверу. Может я что-то не так делаю?
Заранее всем спасибо!