【问题标题】:Setting a variable in Backbone Marionette app在 Backbone Marionette 应用程序中设置变量
【发布时间】:2015-08-31 15:57:04
【问题描述】:

当网络连接丢失时,我想为变量赋值,例如“down”。但是,我不确定在 Backbone 中的何处以及如何设置变量,以便可以从任何视图或模型访问它。我是 Backbone 和 Marionette 的新手。此变量对于执行 REST 端点调用的模块很有用。

在 AngularJS 中,我可以设置一个 http 拦截器或作为服务/工厂,但不确定如何在 BackboneJS Marionette 应用程序中进行设置。

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

另外,我的想法是个好方法吗?

【问题讨论】:

  • 你不能把它放在一个模型中,然后传递给需要它的视图吗?
  • 我是骨干新手。当我创建一个模型时,它可以在不同的视图中使用吗?
  • 是的,Backbone 没有这样的限制。但是,视图通常与一个模型相关联,在这种情况下可能并不方便。其他模型仍然可以作为参数给出并手动存储。

标签: javascript backbone.js marionette offline


【解决方案1】:

您可以使用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
}

当然,每次显式引用频道都非常长 - 你会在 Viewss 初始化时这样做,但这是值得深思的 ^^

【讨论】:

  • 非常感谢@moonwave99。我会玩的:)
  • 回复处理程序应该只出现一次我是对的吗?
  • @devwannabe 是的,您只需设置一次 - 例如,考虑在您的 App 中创建一个 initChannels 方法,以便包装所有全球频道回复 ^^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多