2013-09-20 3 views
2

Я пытаюсь перевести это в CoffeeScript:Проблемы с 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. Мне трудно понять, что происходит, или даже как правильно искать объяснение. Любые указатели будут оценены!

+1

https://chrome.google.com/webstore/detail/try-coffeescript-enhanced/fldhkfldchaibgaheaogapecjmnkaepe?hl=en - это полезно для преобразования JS кофе – jcollum

ответ

3

Попробуйте

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

Второй параметр .extend должен быть объектом JavaScript.

+0

К сожалению, я получаю ту же ошибку: 'TypeError: InfiniteScroll.ViewMixin не является функцией' – nullnullnull

+0

ОК, а что такое' InfiniteScroll.ViewMixin'? – jcollum

+0

Извините, я обновил свой ответ. Похоже, у меня пропала запятая. – beautifulcoder

0

Это быстрый перевод JS в Coffeescript. Когда я вставляю его в окно браузера «Try Coffeescript», он создает тот же JS (с добавленной доходностью). Дополнительные() {} предназначены для меня, а не для CS. Они дают мне понять, что это вызов extend с двумя аргументами, один - атрибутом объекта, а другой - с двумя определениями функций.

App.IndexView = Ember.View.extend(
    InfiniteScroll.ViewMixin, 
    { 
    didInsertElement:() -> 
     @setupInfiniteScrollListener() 
    willDestroyElement:() -> 
     @teardownInfiniteScrollListener() 
    } 
) 
Смежные вопросы