我在Angular应用中使用angular-xeditable。它在开发环境中工作正常,但是在生产中,当所有js文件都缩小时,我收到此错误:
Uncaught Error: [$injector:strictdi] http://errors.angularjs.org/1.3.5/$injector/strictdi?p0=function(n)
搜索代码后,我发现xeditable出了点问题。这里的应用程序创建代码如下:
# create the angular app
angular.module 'dbManagerApp', ['xeditable', 'ngDraggable']
# set the theme for the xeditable
.run (editableOptions, editableThemes) ->
# set the default theme
editableOptions.theme = 'default'
# override the ok button
editableThemes['default'].submitTpl = '<div class="small primary btn"><input type="submit" value="Ok" /></div>'
# override the cancel button
editableThemes['default'].cancelTpl = '<div class="small warning btn" ng-click="$form.$cancel()"><a href="#">Cancel</a></div>'
这里是缩小版本:
(function(){angular.module("dbManagerApp",["xeditable","ngDraggable"]).run(function(n,t){if(!_.isUndefined(n||_.isUndefined(n.theme)))return n.theme="default",t["default"].submitTpl='<div class="small primary btn"><input type="submit" value="Ok" /><\/div>',t["default"].cancelTpl='<div class="small warning btn" ng-click="$form.$cancel()"><a href="#">Cancel<\/a><\/div>'})}).call(this);
//# sourceMappingURL=DbManagerApp.min.js.map
如果我在run方法中注释代码,则不会引发异常。此方法用于配置documentation中描述的xeditable。
我无法弄清楚这种奇怪的行为,是否有任何方法可以查看xeditable是否已成功添加到angular应用程序中,或者还有其他需要检查的内容吗?
最佳答案
您必须注入(inject)依赖项:
.run ( ['editableOptions', 'editableThemes', function(editableOptions, editableThemes)
与 Controller ,服务等类似(请记住在运行的
]
之前添加)
。这是由于事实,如uglify的最小化程序会更改变量名称。按照上面的方式,缩小的代码将是:
.run( ['editableOptions', 'editableThemes', function(n,t){
n
和t
将是对这些依赖项的引用。