Подтвердить что ты не робот

Angularjs ломается с выражением функции coffeescript

Я работаю над интеграцией AngularJs в пример приложения Nodejs. Мой контроллер выглядит следующим образом:

UsersCtrl = ($scope, $http) ->    
   $scope.newUser = {}
   $scope.users = [
     name: "aloman"
     email: "[email protected]"
   ]

который компилируется в javascript:

// Generated by CoffeeScript 1.3.3
(function() {
  var UsersCtrl;

  UsersCtrl = function($scope, $http) {
    $scope.newUser = {}; 
    return $scope.users = [ 
      {   
        name: "aloman",
        email: "[email protected]"
      }   
    ];  
  };
}).call(this);

Приведенный выше код разбивается на консольный журнал:
Ошибка: аргумент 'UsersCtrl' не является функцией, получил undefined

Однако удаление анонимной функции, обернутой вокруг скомпилированного javascript, отлично работает. Рабочий код показан ниже.

var UsersCtrl;
Usersctrl = function($scope, $http) {
    $scope.newUser = {};
    $scope.users = [{
        name: "aloman",
        email: "[email protected]" 
    }];
}; 

Любая причина, по которой мой скомпилированный код не работает. У меня есть ощущение, что оно связано с вложением Angular. Я использую AngularJS 1.0.1

4b9b3361

Ответ 1

Лучше всего использовать этот синтаксис, чтобы не загрязнять глобальную область:

angular.module('myApp').controller('MyController', ($scope) ->)

Ответ 2

Несмотря на то, что все текущие ответы верны, есть третий вариант:

Когда вы скомпилируете CoffeeScript для JavaScript, убедитесь, что вы устанавливаете параметр --bare компилятору CoffeeScript, что заставляет его опускать оболочку функции на выходе.