Javascript 棱角;“未知提供者”;在Yeoman应用程序中使用Grunt Build缩小后出错
我在使用Coffee和Slim的Yeoman生成的Angular应用程序上遇到了Javascript 棱角;“未知提供者”;在Yeoman应用程序中使用Grunt Build缩小后出错,javascript,angularjs,gruntjs,yeoman,uglifyjs,Javascript,Angularjs,Gruntjs,Yeoman,Uglifyjs,我在使用Coffee和Slim的Yeoman生成的Angular应用程序上遇到了grunt build问题,所有库都是最新的。(该应用程序是几天前用最新的生成器生成的。) grunt构建和grunt服务器最初都运行良好。但是在使用grunt服务器进行了几天的开发之后,我发现grunt构建已经完全停止工作 我解决了几个不同的问题。最大的一个问题是,我不得不完全放弃Slim作为索引文件,而使用直接的HTML,因为grunt build在发布到/dist时莫名其妙地删除了80%的索引文件 不幸的是,在
grunt build
问题,所有库都是最新的。(该应用程序是几天前用最新的生成器生成的。)
grunt构建
和grunt服务器
最初都运行良好。但是在使用grunt服务器
进行了几天的开发之后,我发现grunt构建
已经完全停止工作
我解决了几个不同的问题。最大的一个问题是,我不得不完全放弃Slim作为索引文件,而使用直接的HTML,因为grunt build
在发布到/dist
时莫名其妙地删除了80%的索引文件
不幸的是,在我几乎解决了所有问题之后,我开始在我的一个角度指令中出现这个错误:
未捕获错误:未知提供程序:aProvider这听起来像是Angular依赖依赖依赖项注入参数名称的常见问题。在传递依赖项时,请确保将依赖项名称作为字符串包含,以便Angular知道缩小后要注入什么(因为在缩小过程中不会更改字符串值)
从Angular docs:这里可能重复的问题是ngMin(发电机Angular使用的)不能正确地保护
控制器=($scope)
部件,因此您必须手动保护该部件。对于基于myModule
ngmin的东西,应该可以正常工作。绝对正确。我在发帖几分钟后意识到了我的错误,但直到现在才有时间回来纠正。我已经尝试过注入$scope,但我刚刚意识到的语法犯了一个愚蠢的错误。在控制器定义之后添加此代码当然解决了它:controller。$inject=['$scope']除了这个错误,我认为在如何转换Slim索引文件方面存在问题;i、 例如,它在这个过程中丢失了80%的代码。我会单独发布,因为我确实认为那里可能有一个bug。再次感谢你指出注射的错误。这是帮助我的答案,除了在SO中的其他答案。来自angular doc的链接也很重要。我仍然有缩小的问题。我已经尝试在我的指令中应用相同的方法。在link函数中,我添加了相同的语法,并将函数和依赖项包装在一个方括号中,但这破坏了指令,甚至没有返回错误。相同的语法可以应用于指令中的链接函数吗?链接函数不通过依赖项注入接收参数。它的参数是:函数链接(作用域、元素、属性、控制器、transcludeFn)
myModule.directive "editable", ->
controller = ($scope) ->
$scope.showInput = false
$scope.saveContent = ->
$scope.toggleContent()
$scope.save()
linker = (scope, element, attrs) ->
scope.toggleContent = ->
scope.showInput = not scope.showInput
setTimeout((-> element.find('input').focus()), 100)
return DDO =
restrict: 'E'
controller: controller
link: linker
templateUrl: "template/editable.html"
scope:
editableType: "@"
text: "="
placeholder: "@"
save: "&"
myApp.controller('myCtrl', ['$scope', '$http', function($scope, $http) {
}])