Я бы сначала рекомендовал вам использовать Api Backbone для ваших запросов XHR. Это сделает его более последовательным, а также сохранит «извлечения» родной для Backbone. Просто предложение ...
На ваш вопрос. У вас здесь пара вариантов. синхронизации апи с использованием Backbone в:
Пример модели: Использование «разобрать», как ваш звонок «ProcessData».
var MyModel = Backone.Model.extend({
url: '/my/uri/',
//http://backbonejs.org/#Model-parse
parse: function(response) {
// this is your 'processData' call. Do your logic here. This is done before the consumer gets the data.
// return the correct object.
return response.Data;
}
})
// Пример использования: Делайте то, что вам нужно сделать в успехе.
var myModel = new MyModel();
myModel.fetch()
.success(function(data){
// this is the data AFTER parse has done it's magic. Do other view logic.
});
Вот пример использования его в представлении и подписки на событие «sync» на модели. ПРИМЕЧАНИЕ Вы должны вызвать выборку на модели.
var MyView = Backbone.View.extend({
template: _.template(someHTMLTemplate),
initialize: function() {
// setup a sync event that will render once the model fetch is complete.
this.model = new MyModel()
.on('sync', this.render, this);
// this is just an example and I don't recommend putting fetch in initialize.
this.model.fetch();
},
render: function() {
this.$('.content').html(this.template({
model: this.model.toJSON()
}));
}
});
Я хотел бы избежать пользовательских триггеров как можно больше, поскольку они трудно поддерживать и легко получить из рук на больших команд, если все это не согласуется в именовании и использование!
И, наконец, если у вас есть несколько событий, которые необходимо выполнить перед представлением, то я бы использовал метод $ .when для отслеживания объектов обещания.