我的一些应用程序初始值设定项似乎没有触发
Some of my application initializers don't seem to trigger?
我有一个名为SearchApp
的顶级应用程序,它有一个名为TeamApp
的子应用程序。文件结构如下:
search_app.js.coffee # The top-level application.
team_app/
app.js.coffee
team_list.js.coffee
team_invite.js.coffee
我在search_app.js.coffee
初始化我的应用程序:
window.Domainer = {}
# This is the top level application.
Domainer.SearchApp = new Backbone.Marionette.Application()
# Assign a region to the Application.
Domainer.SearchApp.addRegions(stage: '#stage')
并在 html 视图中启动它:
<script>Domainer.SearchApp.start({});</script>
子模块TeamApp
分布在几个文件上(如下)。问题是TeamApp
模块中的某些文件似乎无法将初始值设定项添加到SearchApp
。我可以从一个文件中的初始化console.log
,但在另一个文件中则不能。
# team_app/app.js.coffee
Domainer.SearchApp.module "TeamApp", (TeamApp, SearchApp, Backbone, Marionette, $, _) ->
# Initializers
# ----------
SearchApp.addInitializer (options) ->
console.log "This will log when I call Domainer.SearchApp.start()"
# In coffeescript it's important to explicitly return.
return TeamApp
# team_app/team_list.js.coffee
Domainer.SearchApp.module "TeamApp", (TeamApp, SearchApp, Backbone, Marionette, $, _) ->
class CompactSearcher extends Marionette.ItemView
# ... various code relating to this view.
class TeamList extends Marionette.CollectionView
# various code relating to this view.
SearchApp.addInitializer (options) ->
console.log "This will never log for some reason."
return TeamApp
# team_app/invite_view.js.coffee
Domainer.SearchApp.module "TeamApp", (TeamApp, SearchApp, Backbone, Marionette, $, _) ->
class InviteView extends Marionette.ItemView
# ... various code relating to this view.
SearchApp.addInitializer (options) ->
console.log "This will never log either."
return TeamApp
是否可以将一个模块拆分到多个文件中?这是我唯一能想到的事情正在这里发生。还有什么可能导致问题?
仅
供参考 - 我已经更新了木偶以支持这种情况。
MyApp = new Backbone.Marionette.Application();
MyApp.module("Foo", function(Foo){
Foo.def1 = true;
});
MyApp.module("Foo", function(Foo){
Foo.def2 = true;
});
MyApp.Foo.def1; //=> true
MyApp.Foo.def2; //=> true
你问:
是否可以将一个模块拆分到多个文件中?
检查骨干木偶来源确认这正是正在发生的事情:
// Get the module name, and check if it exists on
// the current parent already
moduleName = moduleNames[i];
module = parentModule[moduleName];
if (!module){
// This is where the module definition is used...
}
return module;
因此,如果您尝试多次定义同一模块,则只会使用第一个定义。
相关文章:
- 我在哪里从 React Redux 应用程序中的服务器获取初始数据
- 有没有一种方法可以在IE8中解决我的Rails javascript应用程序.js的问题
- 获取包含我的谷歌应用程序脚本的页面的url
- 胡子.js卡在我的 Rails 应用程序中的 0.4.0-dev 上
- 如何消除我的应用程序上的希腊字符
- 我的应用程序中的可点击元素应始终是锚标记
- 如何创建重用我的 JS 库的 iPad 应用程序,这些库是为 Web 应用程序构建的
- ASP.NET:是否可以将CSS或Javascript注入到我的Web应用程序中的每个页面中
- 为什么IE无法正确显示我的HttpHandler Web应用程序中的特殊符号
- 为什么我的应用程序中的某些组件在IE7中工作,而在IE9中不起作用
- 为什么我的Mac应用程序中的WebView html拒绝加载JQuery或任何外部脚本
- Angularjs模式窗口在我的应用程序中的实现
- 我曾经跟随某人的代码样本,并尝试应用到我的HighChart程序,但我可以'I don’我一点也做不到
- 如何从我的web应用程序中的Java脚本文件中获得加密的密码
- 如何始终解析相对于我的web应用程序根的URL
- 我可以使用标准Javascript应用程序中的Google Polymer吗
- Facebook应用程序-我如何计算发件人邀请的朋友数量
- 访问导致我的应用程序崩溃的数组元素
- 我的网络应用程序中的谷歌地图API
- Javascript应用程序-我的代码怎么样