由于范围

时间:2016-06-25 09:58:39

标签: javascript oop coffeescript

我有两个类 StepsForm BiblioForm 我希望步骤表单能够扩展 BiblioForm,但是当我尝试使用下面的代码时控制台说

  

未捕获的ReferenceError:BiblioForm

StepsForm类

(($) ->

    class StepsForm extends BiblioForm

        ...

    form = new StepsForm;

) jQuery

BiblioForm类

(($) ->
    class BiblioForm

        ....

    basicBiblioForm = new BiblioForm

) jQuery

我使用grunt编译并将这些类放在一起,就像这样

coffee: {
  compile: {
    files: {
      'lib/js/tome-references.js' : [
        'lib/coffee/biblio-form.coffee',
        'lib/coffee/steps-form.coffee',
      ]
    }
  }
},

我只想注意,我需要在两个类中使用jQuery。

当我删除每个类中的第一行和最后一行时,扩展功能可以工作,但是我无法访问jQuery。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

如果jQuery是一个依赖项,请在类中明确它。

class BiblioForm
  constructor: (@$) ->

  doSomething: =>
    @$("#foo").bar()

class StepsForm extends BiblioForm
  constructor: ($) ->
    super($)

  doAnything: =>
    @$("#baz").hide()

并将其实例化为

biblioForm = new BiblioForm(jQuery)
stepsForm = new StepsForm(jQuery)

concatenate coffee files before compiling them最好避免其他可见性问题。