Angularjs 与 coffeescript 函数表达式中断

Angularjs breaks with coffeescript function expression

本文关键字:表达式 中断 函数 coffeescript Angularjs      更新时间:2023-09-26

我正在努力将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

最好使用此语法,以免污染全局范围:

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

尽管当前所有答案都是正确的,但还有第三个选项:

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