我在Grails 2.4.4中有一个项目,我也使用AngularJS。
我决定使用Asset Pipeline Plugin和AngularJs Annotate Asset-Pipeline。第一个用于处理,缩小等静态资产(js,css等),第二个用于在需要它的每个函数中获取myFunc.$inject = [...]
“注入”,这是由于AngularJS依赖的注入依赖性
根据AngularJs Annotate Asset-Pipeline的文档,它应该在需要时在我的js文件上生成战争时放置myFunc.$inject=[]
,但真实是不同的:它根本不起作用(我没有在缩小的文件中看到任何$inject
,并且由于在{SO dependency injection和Angularjs error Unknown provider上广泛讨论了AngularJS Error: $injector:unpr Unknown Provider,应用程序中断了
以下是相关代码(如果需要,请告诉我们)
BuildConfig.groovy
compile "org.grails.plugins:asset-pipeline:1.9.9"
compile "org.grails.plugins:angular-annotate-asset-pipeline:2.4.1"
AngularJS控制器(这只是一个例子)
angular
.module('app', [])
.controller('myCtrl', myCtrl);
/*@ngInject*/ // << --- did not work!
function myCtrl ($scope){
//I also used the "ngIngect"; alternative here and it did not work either!
$scope.myVar = "sample text";
}
答案 0 :(得分:1)
简答:
更改依赖项的版本
来自:
compile "org.grails.plugins:angular-annotate-asset-pipeline:2.4.1"
到此:
compile "org.grails.plugins:angular-annotate-asset-pipeline:1.1.3"
长篇故事
在深入了解AngularJs Annotate Asset-Pipeline之后,在朋友提供的帮助下,我得出结论,这个插件的作者只是删除了其中的逻辑。
这意味着现在(20017年5月25日)使用此插件的当前版本(2.4.1),没有人能够使用它,因为它打算使用它。
所以,如果有人遇到同样的问题,应该使用版本1.1.3,这是我能够成功使用的最新版本。