AngularJS ng-controller未定义

时间:2016-06-03 08:40:53

标签: angularjs controller ng-controller

我正在开展一个小角度项目,我在其中使用了mattlewis92的引导程序日历,并且我的控制器一直存在问题。

这是我的.js文件:

'use strict';

var app = angular.module('Calendrier574', ['ngMaterial', 'ngRoute', 'mwl.calendar', 'ui.bootstrap', 'ngTouch', 'ngAnimate']);

app.controller("cal574", function(moment, alert, $timeout, $log) {
var vm = this;

vm.events = [];
vm.calendarView = 'day';
vm.viewDate = moment().startOf('month').toDate();

vm.isCellOpen = true;

vm.toggle = function($event, field, event) {
  $event.preventDefault();
  $event.stopPropagation();
  event[field] = !event[field];
};

});
app.config(function(calendarConfig) {
  calendarConfig.dateFormatter = 'moment';
});

我希望能够使用两个控制器,因为我希望在同一页面上显示同一日历的两个版本,一个显示日视图,另一个显示月视图。

所以我在.html文件中有这个

<html lang="fr" ng-app="Calendrier574">

这是我的一个div:

<md-content id="content" ng-controller="cal574 as vm" layout-padding flex>

但我一直得到“参数'cal574'不是函数,未定义”。 我查看了有关该主题的帖子,但我找不到任何有用的信息。

如果您还有其他需要请告诉我。

顺便说一句,我正在使用棱角1.5.5。

编辑:我创建了一个jsfiddle,即使这样也缺少依赖关系,它可能会帮助我们更好地查看代码https://jsfiddle.net/zzddpk4v/#&togetherjs=s8M8Vir3rc

DOUBLE EDIT:仍然在寻找解决方案,我正在研究cloud9,所以如果有人想看看几乎工作的整个代码,并尝试直接编辑它, 你可以在这里查看https://ide.c9.io/millenium/back574upsidenav-cloned

3 个答案:

答案 0 :(得分:1)

您是否在项目/ html中包含了所有相关的.js文件。

  <script src="../path to controller/controller.js"></script>

当我忘记包含.js文件时,我收到了同样的错误。

答案 1 :(得分:0)

您需要将控制器包装在一个函数中:

(function() {
    'use strict';
    // your controller code here
})();

答案 2 :(得分:0)

尝试更改此行:

app.controller("cal574", function(moment, alert, $timeout, $log) {

要:

app.controller("cal574", ['moment', 'alert', '$timeout', '$log', function(moment, alert, $timeout, $log) {

然后在控制器的末尾添加相应的额外内容。