javascript - Angularjs $ 注入(inject)器 :unpr in the run method after minification

标签 javascript asp.net-mvc angularjs minify

我在我的 Angular 应用程序上使用 angular-xeditable。它在开发环境中工作正常,但在生产环境中,当所有 js 文件都被缩小时,我得到了这个错误:

Uncaught Error: [$injector:strictdi] http://errors.angularjs.org/1.3.5/$injector/strictdi?p0=function(n)

搜索我的代码,我发现 xeditable 出了点问题。这是 coffescript 中的应用程序创建代码:

# 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 方法中注释代码,它不会抛出异常。此方法用于配置 xeditable,如 documentation 中所述。 . 我无法弄清楚这种奇怪的行为,有什么方法可以查看 xeditable 是否已成功添加到 Angular 应用程序中,或者是否还有其他要检查的内容?

最佳答案

你必须注入(inject)依赖:

.run ( ['editableOptions', 'editableThemes', function(editableOptions, editableThemes)

类似controllers,services等(记得在run的之前加一个])

这是因为像 uglify 这样的最小化器改变了变量名。在上面的方式中,缩小代码将是:

.run( ['editableOptions', 'editableThemes', function(n,t){

nt 将是对这些依赖项的引用。

关于javascript - Angularjs $ 注入(inject)器 :unpr in the run method after minification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27269954/

相关文章:

javascript - ajax成功后如何在智能向导中前进

c# - 数据未在模型 ASP.Net mvc 中设置

asp.net-mvc - ASP.NET MVC - 从客户端检测到潜在危险的 Request.Form 值

javascript - 登录页面加载为部分页面而不是完整页面

c# - 尝试使用 angularJS 和 c# webapi 从服务器下载文件

javascript - 向 React Bootstrap 下拉菜单添加图标

javascript - Owl Carousel 2 : filtering items, 但使用 Javascript 保持排序顺序

javascript - 添加我的 AngularJS 模块时,menuToggle 不适用于移动设备,但适用于桌面

javascript - 单击下拉列表中的元素时关闭下拉列表

c# - 处理您的请求时发生错误。 MVC 4