在ui-grid中聚合列值时uiGridConstants注入后仍为undefined求助
我之前也碰到过类似的情况,大概率是模块依赖或者注入环节出了疏漏,给你几个具体的排查和解决方向:
确认是否引入了
ui.grid.constants模块
虽然你已经在app.js里引入了ui.grid,但uiGridConstants是封装在单独的ui.grid.constants模块中的,必须显式把它添加到你的应用依赖里。修改app.js的代码如下:angular.module('yourApp', ['ui.grid', 'ui.grid.constants']);很多开发者容易忽略这一步,因为
ui.grid本身不会自动包含constants模块,必须手动声明依赖。检查控制器的注入方式是否规范
确保你在控制器里的注入没有写错,推荐使用显式数组注入的方式,避免代码压缩时参数名被混淆导致的问题:angular.module('yourApp').controller('YourGridController', ['uiGridConstants', function(uiGridConstants) { console.log(uiGridConstants); // 现在应该能正常输出常量对象了 }]);如果你用的是隐式注入(直接写参数),一定要确保代码没有被压缩混淆,否则参数名会被替换,导致无法识别
uiGridConstants。核对ui-grid版本的模块结构
不同版本的ui-grid对模块拆分有差异:有些旧版本中uiGridConstants是直接属于ui.grid模块的,但新版本把它独立成了ui.grid.constants。你可以查看项目里的ui-grid版本(比如bower.json、package.json或者script标签里的版本号),对照对应的官方文档确认模块结构是否匹配。排查是否存在重复加载或模块冲突
如果页面里重复加载了AngularJS或者ui-grid的脚本,可能会导致模块注册异常,进而让uiGridConstants无法被正确识别。检查你的HTML中的script标签,确保只加载了一次Angular和ui-grid的相关资源,没有重复引入的情况。
内容的提问来源于stack exchange,提问作者IWI

