2015-08-31 1 views
0

Я хочу присвоить значение переменной «down», когда сетевая связь будет потеряна. Однако я не знаю, где и как установить переменную в Backbone, чтобы она была доступна из любого вида или модели. Я новичок в Backbone и Marionette. Эта переменная будет полезна для модулей, выполняющих вызов конечной точки REST.Установка переменной в приложении Магионная магия

В AngularJS я могу либо установить перехватчик http, либо как сервис/фабрику, но не уверен, как это сделать в приложении Marbella для BackboneJS.

if (networkStatus !== 'down') { 
    // do the backbone.fetch() 
} 

Кроме того, моя идея - хороший подход?

+0

Не можете ли вы поместить его в модель, которая передается в те виды, которые в ней нуждаются? –

+0

Я новичок в позвоночнике. Когда я создаю модель, ее можно использовать в разных представлениях? – devwannabe

+0

Да, таких ограничений нет в Backbone. Однако представление обычно связано с одной единственной моделью, которая в этом случае может оказаться непригодной. Другие модели все же могут быть приведены в качестве аргументов и сохранены вручную. –

ответ

2

Вы можете использовать Backbone.Radio и настроить globalState канал:

var globalStateChannel = Backbone.Radio.channel('globalState') 
if(globalStateChannel.request('networkStatus') !== 'down'){ ... } 

Где-то в вас App, вы должны установить обработчик ответа:

var globalStateChannel = Backbone.Radio.channel('globalState') 
globalStateChannel.reply('networkStatus', function(){ 
    // put your logic here 
    return something 
} 

Конечно, явно Ссылка на канал каждый раз ужасно длинная - вы сделали бы это при инициализации Views, но это пища для размышлений ^^

+0

Спасибо большое @ moonwave99. Я буду играть с ним :) – devwannabe

+0

Я прав, что обработчик ответа должен появляться только один раз? – devwannabe

+0

@devwannabe да, вы должны установить его только один раз - подумайте о создании метода 'initChannels' в вашем' приложении', например, чтобы обернуть все глобальные ответы на канал ^^ – moonwave99