我正在尝试将其翻译成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格式化。我无法弄清楚发生了什么,甚至无法正确搜索解释。任何指针都将不胜感激!
答案 0 :(得分:3)
尝试
Whistlr.OrganizationsView = Em.View.extend InfiniteScroll.ViewMixin,
didInsertElement: -> @setupInfiniteScrollListener()
willDestroyElement: -> @teardownInfiniteScrollListener()
.extend
的第二个参数需要是一个JavaScript对象。
答案 1 :(得分:0)
这是JS到Coffeescript的快速翻译。当我将其粘贴到“Try Coffeescript”浏览器窗口时,它会生成相同的JS(添加了返回值)。 extra(){}是为了我的利益,而不是CS的。他们告诉我这是对extend
的调用,有2个参数,一个是对象属性,另一个是带有两个函数定义的对象。
App.IndexView = Ember.View.extend(
InfiniteScroll.ViewMixin,
{
didInsertElement: () ->
@setupInfiniteScrollListener()
willDestroyElement: () ->
@teardownInfiniteScrollListener()
}
)