首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >角度控制器错误‘参数'MainCtrl’不是函数,未定义‘

角度控制器错误‘参数'MainCtrl’不是函数,未定义‘
EN

Stack Overflow用户
提问于 2014-12-13 07:58:26
回答 1查看 2.5K关注 0票数 0

在今天下午的某个时候,我突然得到了以下AngularJS错误:Argument 'MainCtrl' is not a function, got undefined

我有一个很好的版本仍然在Chrome上运行,没有任何错误,所以我试图找出差异-但是没有用。

如果有任何关于如何修复错误Argument 'MainCtrl' is not a function, got undefined的建议我将不胜感激

我在index.html中加载controllers.js文件--在body部分中:

代码语言:javascript
复制
 <!DOCTYPE html>
 <html ng-app="rage.ui">

 <head>
     <!-- loading css files here... -->
 </head>

 <body ng-controller="MainCtrl as main">

  <!-- Wrapper-->
  <div id="wrapper">
     <!-- Navigation -->
  </div>

  <script src="app/app.js"></script>
  <script src="app/config.js"></script>
  <script src="app/js/controllers.js"></script>

</body>

这是我的controllers.js文件(也是在index.html中加载的)中的MainCtrl -

代码语言:javascript
复制
* MainCtrl - controller */

(function () {
 'use strict';
 angular.module('rage.ui')
    .controller('MainCtrl', ['$scope', '$interval', '$window', 'widgetDefinitions', main])
    .factory('widgetDefinitions', [widgetDefinitions])
    .value('defaultWidgets', [
    { name: 'random' },
    { name: 'time' },
    { name: 'datamodel' },
    {
        name: 'random',
        style: {
            width: '50%'
        }
    },
    {
        name: 'time',
        style: {
            width: '50%'
        }
    }
    ]);

function main($scope, $interval, $window, widgetDefinitions, defaultWidgets) {
    this.userName = 'Risk user';
    // ...
}
  function widgetDefinitions(RandomDataModel) {
    return [
      {
          name: 'random',
          directive: 'wt-scope-watch',
          attrs: {
              value: 'randomValue'
          }
      }
      {
          name: 'treegrid',
          templateUrl: 'app/views/templateGadget/treeGrid.html',
          title: "Tree Grid Report",
          attrs: {
              width: '50%',
              height: '250px'
          }
      }
    ];
  }

})();

在我尝试向malhar Angular-Dashboard框架添加一个新的'gadgetModelFactory‘时,我破坏了我的系统。这是我的新工厂的好版本,现在修复了:

代码语言:javascript
复制
'use strict';

angular.module('rage').
factory('gadgetDataModel', function ($scope, WidgetDataModel) {
function gadgetDataModel() {
    var test = 123;
}

gadgetDataModel.prototype = Object.create(WidgetDataModel.prototype);
gadgetDataModel.prototype.constructor = WidgetDataModel;

angular.extend(gadgetDataModel.prototype = {        
    init: function () {
        // to be overridden by subclasses
        var dataModelOptions = this.dataModelOptions;
    },

    destroy: function () {
        // to be overridden by subclasses
        WidgetDataModel.prototype.destroy.call(this);
        $interval.cancel(this.intervalPromise);
    }
});

});

和我的app.config:

代码语言:javascript
复制
(function () {
angular.module('rage.ui', [
    'ui.router',
    'ui.bootstrap',
    'ui.dashboard'
])
})();
EN

回答 1

Stack Overflow用户

发布于 2019-05-15 02:32:28

也许你有两个具有相同模块名的.js文件。例如:

file1.js:

代码语言:javascript
复制
var appControllers = angular.module('appControllers', []);

file2.js:

代码语言:javascript
复制
var appControllers = angular.module('appControllers', []);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27453976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档