咖啡脚本缩进的问题

Trouble with Coffeescript Indent

本文关键字:问题 缩进 脚本 咖啡      更新时间:2023-09-26

我正在尝试将其翻译成Coffeescript:

App.IndexView = Ember.View.extend(InfiniteScroll.ViewMixin, {
  didInsertElement: function(){
    this.setupInfiniteScrollListener();
  },
  willDestroyElement: function(){
    this.teardownInfiniteScrollListener();
  }
});

我的第一个方法是这样的:

Whistlr.OrganizationsView = Em.View.extend
  InfiniteScroll.ViewMixin
  didInsertElement: ->
    @setupInfiniteScrollListener()
  willDestroyElement: ->
    @teardownInfiniteScrollListener()

但它抛出了一个意想不到的缩进错误。所以我尝试了这个:

Whistlr.OrganizationsView = Em.View.extend InfiniteScroll.ViewMixin
  didInsertElement: ->
    @setupInfiniteScrollListener()
  willDestroyElement: ->
    @teardownInfiniteScrollListener()

这给了我这个错误:

TypeError: InfiniteScroll.ViewMixin is not a function

如果我使用普通的js,它可以正常工作。所以问题肯定出在Coffeescript格式上。我很难弄清楚发生了什么,甚至无法正确搜索解释。任何指示将不胜感激!

尝试

Whistlr.OrganizationsView = Em.View.extend InfiniteScroll.ViewMixin,
  didInsertElement: -> @setupInfiniteScrollListener()
  willDestroyElement: -> @teardownInfiniteScrollListener()

.extend的第二个参数需要是一个 JavaScript 对象。

这是JS到Coffeescript的快速翻译。 当我将其粘贴到"尝试咖啡脚本"浏览器窗口中时,它会生成相同的JS(带有附加的返回值)。 额外的 (){} 是为了我的利益,而不是 CS。 他们向我清楚地表明,这是对extend的调用,具有 2 个参数,一个是对象属性,另一个是具有两个函数定义的对象。

App.IndexView = Ember.View.extend(
    InfiniteScroll.ViewMixin,
    {
    didInsertElement: ()  ->
        @setupInfiniteScrollListener()
    willDestroyElement: () ->
        @teardownInfiniteScrollListener()
    }
)