Phoenix Framework (Elixir) - 将 JS 文件加载到资产管道中

Phoenix Framework (Elixir) - Loading JS files into the asset pipeline

所以我已经 angular 与 Phoenix 一起工作,但是当我尝试将我的控制器移动到 web/static/js/controllers 下的单独文件时,它们没有加载。我猜这与早午餐有关,但我不确定...有什么想法吗?

谢谢!

我自己以前也遇到过这个问题。我相信这与 Brunch yes 有关。你试过运行mix phoenix.digest了吗?

如果我没记错的话,如果您将文件移动到 priv/static 它应该可以工作(而不是它们在 Web 目录中),但我认为这不是正确的方法。

好吧,我找到了一个解决方案,但它不是很优雅....在 app.js 你可以做到 import testcontroller from './controllers/test_controller' 没有在实际控制器 JS 文件中导出(名为 test_controller.js,注意 app.js 中你没有写 .js 扩展名)但是就像我说的 - 这不是最优雅的解决方案,因为我想在目录中自动加载文件,而不是指定每个文件...

已修复! 首先,我将 Brunch.io 替换为 Gulp(您可以在此处找到一个很好的指南 - http://bryaninspired.com/phoenix-0-10-with-gulp-and-jspm/) 我遇到的第二个问题是 jspm 没有加载我安装的包。这里的问题是,在 config.js 中我给出了绝对路径而不是相对路径:

paths: { "github:*": "/jspm_packages/github/*", "npm:*": "/jspm_packages/npm/*" }

现在它可以很好地加载 AngularJS,以及我放入 web/static/js 中的所有 JS 文件,包括子目录。 现在让我们看看它是否能够加载我的 Angular HTML 文件....

编辑 似乎加载Angular是一回事,但实际上运行ning我的Angular代码不起作用...我正在尝试找出原因...我认为这与 SystemJS 或 Gulp 有关。 奇怪的是,非 angular 代码(就像 test.js 文件中的简单 console.log)运行 就可以了。 angular.module('blah',[]).whatever 里面的任何东西似乎都不 运行.....

编辑 #2 - 已修复! 看来我忘了将以下内容添加到我的 JS

angular.element(document).ready(function() { angular.bootstrap(document, ['ApplicationName']); });

别忘了 bootstrap angular 准备好文件!