Angularjs打破了coffeescript函数表达式

dan*_*eta 13 javascript coffeescript angularjs

我正在努力将AngularJs集成到一个示例Nodejs应用程序中.我的控制器如下:

UsersCtrl = ($scope, $http) ->    
   $scope.newUser = {}
   $scope.users = [
     name: "aloman"
     email: "aloman@example.com"
   ]
Run Code Online (Sandbox Code Playgroud)

编译成javascript:

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

  UsersCtrl = function($scope, $http) {
    $scope.newUser = {}; 
    return $scope.users = [ 
      {   
        name: "aloman",
        email: "aloman@example.com"
      }   
    ];  
  };
}).call(this);
Run Code Online (Sandbox Code Playgroud)

上面的代码打破了控制台日志:
错误:参数'UsersCtrl'不是函数,未定义

但是删除包含在已编译的javascript中的匿名函数可以正常工作.工作代码如下所示.

var UsersCtrl;
Usersctrl = function($scope, $http) {
    $scope.newUser = {};
    $scope.users = [{
        name: "aloman",
        email: "aloman@example.com" 
    }];
}; 
Run Code Online (Sandbox Code Playgroud)

我的编译代码无法正常工作的原因.我有一种感觉它与Angular的示波器注入有关.我正在使用AngularJS 1.0.1

And*_*lin 38

最好使用这种语法,这样就不会污染全局范围:

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