加载Angular模块遇到了一个奇怪的问题。
我有一个像这样的文件结构
-ng-app
-app
-account
accountCtrl.js.coffee
-auth
authCtrl.js.coffee
-other_folders
app.js.coffee
我正在加载accountCtrl和其他类似的控制器
#app/app.js.coffee
angular.module("app", [
'ngResource'
'smart-table'
'checklist-model'
'ui.router'
...
])
#app/account/accountCtrl.js.coffee
@app = angular.module('app')
app.controller 'accountCtrl', ($scope, $state) ->
....
#app/auth/authCtrl.js.coffee
@app = angular.module('app')
app.controller 'authCtrl', ($scope, $state) ->
....
但是,accountCtrl会抛出错误
模块' app'不可用!您要么错误拼写了模块名称 或者忘了加载它。如果注册模块,请确保指定 依赖关系作为第二个参数。
我知道语法是正确的,因为我正在使用相同的语法加载几十个其他控制器。所以我开始玩不同的场景。
我删除了'帐户'夹
没有抛出错误,其他控制器正常加载
我将帐户文件夹重命名为z-account
没有抛出任何错误,包括accountCtrl在内的所有控制器都正常加载
因此,只有在文件夹命名为' account'并且是' app'中的第一个文件。夹。有什么想法会发生什么?
答案 0 :(得分:0)
Rails资产管道包括javascript文件,并且app / account.js.coffee被包含在app / app.js.coffee之前,因此缺少模块错误。
可能的两种解决方案:
带有下划线的前缀文件,以确保首先加载:
_app.js.coffee
或者
删除
//= require_tree .
并手动包含文件。