2014-03-04 2 views
1

Ember.js의보기에 여러 개의 믹스 인을 포함하고 두 개 이상의 믹스 인을 포함하거나 동일한 이벤트 (예 : willInsertElement)를 사용하고 있습니다. Ember 1.4.0-beta.5를 실행 중입니다.Ember.js에서 같은 이벤트가있는 여러 믹스

나는 각 mixin의 이벤트가보기에 의해 무시된다는 것을 알고 있습니다. 그러나 mixin 및 view에서 같은 이벤트 후크를 사용하거나 동일한보기에 포함 된 여러 mixin을 mixin의 앞에서 설명한 이벤트 메소드 시작시 this._super();을 호출하여 사용할 수 있다는 것을 읽었습니다. 그러나, 나는 성공적으로 이것을 가능하게 만들지 못했습니다. 내 질문은, 어떻게, 그래서 이벤트 후크의 각 발생 내에서 모든 논리가 호출됩니다 viewin 및 mixin (또는 동일한보기에 포함 된 여러 mixins) 동일한 이벤트 후크 내에서 논리를 작성할 수 있습니다. 여기

은 예이다 :

App.StatsView = Em.View.extend(
    App.DateFormatting, { 

    willInsertElement: function() { 
     // Some view-specific logic I want to call here 
    }, 
}); 

App.DateFormatting = Em.Mixin.create({ 

    willInsertElement: function() { 
     this._super(); // This doesn't work. 
     // Some mixin logic I want to call here 
    }, 
}); 

N.B. 한 가지 방법은 믹스 인을 사용하지 않고 대신보기를 확장하는 것입니다 (willInsertElement는 Em.View에만 해당되므로).하지만 앱에서는 유지 관리 할 수 ​​없습니다.

답변

5

사용중인 다른 기능이 서로 종속되어 있지 않은 경우 willInsertElement 후크를 무시하지 말고 이벤트/후크가 호출 될 때 발생하는 기능을 알려주는 것이 가장 좋은 해결책입니다.

처럼 :

App.StatsView = Em.View.extend(App.DateFormatting, { 
    someSpecificFunction: function() { 
    console.log('beer me'); 
    }.on('willInsertElement') 
}); 

App.DateFormatting = Em.Mixin.create({ 
    dateFormattingFunction: function() { 
    console.log('beer you'); 
    }.on('willInsertElement') 
});