AngularJS出现[$injector:modulerr]报错,代码无法运行求助
问题排查与解决
错误本质
你碰到的[$injector:modulerr]错误,核心原因是Angular找不到NgTableParams对应的依赖模块——你的代码里注入了NgTableParams,但模块声明只加了datatables,而NgTableParams属于ngTable模块,和datatables完全是两个东西。
分步修复
引入ngTable依赖文件
先确保页面里加载了ngTable的JS和CSS(如果用CDN,选和Angular1.8.2兼容的版本):<!-- ngTable样式文件 --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ng-table@1.0.1/bundles/ng-table.min.css"> <!-- ngTable脚本文件 --> <script src="https://cdn.jsdelivr.net/npm/ng-table@1.0.1/bundles/ng-table.min.js"></script>修正模块依赖
把模块声明里的['datatables']改成['ngTable'](如果确实需要datatables,就写成['datatables', 'ngTable'],但你的代码没用到datatables功能,只保留ngTable就行):var app = angular.module("myapp", ['ngTable'])修复代码里的其他隐患
- 初始化
$scope.f对象:直接给$scope.f.tab赋值会报错,因为$scope.f一开始未定义,要先初始化:$scope.f = {}; - 替换页码获取方式:
$scope.tableList.page()可能在初始化时取不到值,改用params.page():params: { page: params.page(), }
- 初始化
修复后完整代码
var app = angular.module("myapp", ['ngTable']) app.controller("mainCtrl", ['$scope', '$http', 'NgTableParams', '$interval', '$filter', function($scope, $http, NgTableParams, $interval, $filter) { // 初始化f对象,避免未定义报错 $scope.f = {}; $scope.oDistrict = function(trash, order_by) { $scope.f.tab = "list"; $scope.f.trash = trash; $scope.tableList = new NgTableParams({}, { getData: function($defer, params) { var $btn = $('button').button('loading'); return $http.get("{{ url('mst_district_list') }}", { params: { page: params.page(), // 用params内置方法获取页码 } }).then(function(response) { $btn.button('reset'); $scope.tableList.total(response.data.data.total); return response.data.data.data; }, function(error) { $btn.button('reset'); swal('', error.data, 'error'); }); } }); } $scope.oDistrict(); }]);
内容的提问来源于stack exchange,提问作者bengbeng
相关产品推荐
相关产品推荐

