2016-06-03 3 views
3

Я работаю над небольшим угловым проектом, в котором я использую календарь бутстрапов mattlewis92, и у меня проблемы с контроллером.AngularJS ng-controller undefined

Вот подам .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.

EDIT: Я создал jsfiddle, даже таким образом, есть отсутствующие зависимости может иметь некоторую помощь, чтобы лучше взглянуть на код https://jsfiddle.net/zzddpk4v/#&togetherjs=s8M8Vir3rc

DOUBLE EDIT: Все еще ищете решение, я работаю над Cloud9 так что если кто-то хочет посмотреть на весь код почти работает, и попытаться изменить его непосредственно, вы можете пойти проверить его здесь https://ide.c9.io/millenium/back574upsidenav-cloned

+0

Вы пытались иметь имя контроллера без номеров? Я знаю, что угловые не любят специальных символов вне английского языка. Может быть, это то же самое с цифрами. –

+0

Можете ли вы создать jsfiddle? – Sparw

+0

@StianStandahl Я изменил имя для имени без номера, теперь я получаю еще одну ошибку, заявив, что при загрузке модуля произошла ошибка. – CamilleSNCF

ответ

0

Вам нужно обернуть контроллер в функции:

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

Содержимое контроллера уже находится внутри функции. –

+0

Я не думаю, что вам нужно что-то делать. Это хорошая практика. –

+0

Я попытался добавить то, что вы мне сказали, но не видел изменений в результате. – CamilleSNCF

1

Включили ли вы все связанные файлы .js в свой проект/html.

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

У меня такая же ошибка, когда я забыл включить файл .js.

+0

У меня есть, и после углового.js один. – CamilleSNCF

0

Попытки изменить эту строку:

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

To:

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

Затем добавьте в соответствующем дополнительном] в конце контроллера.

+0

Спасибо за ваш ответ, я попробовал, как вы сказали, но по-прежнему те же ошибки. – CamilleSNCF