2013-11-27 4 views
0

Я начинаю внедрять Backbone в веб-приложении.Магистраль: события от внешнего источника посредника

Приложение имеет уже свои собственные объекты, а также посредник (здесь называется EventTools) для обмена событиями между объектами. Так, например, для. объект выписывает, как это:

EventTools.add({ 

    "gt_pos_ready":function(coords){ 
     //code; 
    }.bind(this), 

    }); 

А потом какой-то другой объект пожаров событие:

EventTools.fire("gt_pos_ready", args..); 

Fine. Но что, если я хочу, чтобы объект просмотра или другой объект Backbone прослушал EventTools, выпустив какое-то событие?

ответ

1

Вы можете использовать Backbone.Events вместо своего собственного пути, чтобы вызвать и слушать события:

_.extend(EventTools, Backbone.Events); 

EventTools.on("gt_pos_ready", function(coords) { 
    /*Code for gt_pos_ready()*/ 
}); 

EventTools.trigger("gt_pos_ready", {LNG:"40.542343",LAT:"32.232423"}); 

Я уверен, что вы используете lodash/подчеркнуть, потому что это Backbone отд, так что это должно работать ,

+0

Это интересно. Поэтому я бы не использовал исходную реализацию EventTools (это класс, который я использовал с использованием функций $ .Callbacks). [link] (http://jsfiddle.net/stratboy/aYb5B/) Итак, какова должна быть природа EventTools в этом случае? – Stratboy

+0

В конце концов, я понял (как вы писали), что Backbone может выступать в роли самого посредника. Я мог бы просто использовать Магистраль в одиночку. Только для организационных целей я расширил только пустой объект, сохраненный в EventTools 'var EventTools = _.extend ({}, Backbone.Events);' Для всех, кто интересуется простым классом посредника, который использует $ .Callbacks, ссылка в моем предыдущем комментарии просто хорошо. Спасибо @fcortes – Stratboy

Смежные вопросы