Coffeescript更改构造函数的参数名称

时间:2016-03-18 13:58:45

标签: angularjs coffeescript

我面对coffeescript编译器非常奇怪的行为。在coffee中使用angularjs时,它会更改类构造函数中的参数名称。这会导致角度注射器出现故障。

我通过使用不同的架构解决了问题。我的问题是:为什么会发生这种情况,为什么coffeescript编译器认为必须更改该名称,因为它们位于不同的范围内?

app = angular.module 'test', []

app.config ($q) ->
   ### do something with $q ###

app.service 'serv', 
  class MyServ

    ### constructor saves $q into this, BUT...###
    constructor: (@$q) ->

    ### func uses $q ###
    func: ->
      @$q.when 'ok'

编译为:

var MyServ, app;

app = angular.module('test', []);

app.config(function($q) {

  /* do something with $q */
});

app.service('serv', MyServ = (function() {

  /* constructor saves $q into this, BUT... */
  function MyServ($q1) {
    this.$q = $q1;
  }


  /* func uses $q */

  MyServ.prototype.func = function() {
    return this.$q.when('ok');
  };

  return MyServ;

})());

如果我删除了之前函数(config)中$ q的使用情况,那么它会按预期工作。

如果不在构造函数中使用@,它也可以工作。

这是某种错误还是合法的?

0 个答案:

没有答案