Angularjs打破了coffeescript函数表达式

时间:2012-08-13 01:03:48

标签: javascript coffeescript angularjs

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

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

编译成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);

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

然而,删除编译的javascript周围的匿名函数工作正常。 工作代码如下所示。

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

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

2 个答案:

答案 0 :(得分:38)

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

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

答案 1 :(得分:0)

尽管目前所有答案都是正确的,但仍有第三种选择:

当您将CoffeeScript编译为JavaScript时,请确保将--bare选项设置为CoffeeScript编译器,这使得他省略了输出中的函数包装器。