2012-06-07 7 views
2

꽤 비싼 타사 UI 요소를 설정하고 렌더링하는 역할을하는 App.WidgetView이 있습니다.이 UI 요소는 widget입니다. 이 widgetrefresh() 방법을 사용합니다. 나는 에 refreshWidget() 메서드를 정의했으며이 메서드는 widget.refresh()을 호출했습니다.Ember.js - 핸들 막대 내에서 초기화 된 뷰에서 메서드 호출

App.WidgetView = Em.View.extend({ 
    content: null, 
    widget: null, 
    init: function() { 
     this._super(); 
     //initialize widget using content 
    }, 
    refreshWidget: function() { 
     this.get('widget').refresh(); 
    } 
}); 

나는 지금은 App.widgetControllerrefreshAll() 방법을 가지고하는 방법에 너무 슈어하지 메신저 필요 App.widgetController

{{#each App.widgetController}} 
    {{view App.WidgetView contentBinding="this"}} 
{{/each}} 

에서 데이터를 당기는 #each 루프를 사용하여 내 페이지에 렌더링 WidgetView s의 목록을 가지고 이것을 깨끗하게하십시오. 지금 나는 에 속성을 가지고 있으며 0에서 시작하여 refreshAll이 호출 될 때마다 불쾌감을 느낍니다.

App.widgetController.reopen({ 
    refresher: 0, 
    refreshAll: function() { 
     this.incrementProperty('refresher'); 
    } 
}); 

그런 다음 App.WidgetViewApp.widgetController.refresher에 바인딩 된 refresherBindingrefresher이 변경 될 때 refreshWidget 를 호출하는 관찰자가

App.WidgetView.reopenClass({   
    refresherBinding: 'App.widgetController.refresher', 
    refresherChanged: function() { 
     this.refreshWidget(); 
    }.observes('refresher') 
}); 

이 수행 할 수있는 clearner 방법이 있는지 궁금 작동하지만 메신저 그것.

답변

4

refreshAll을 구현하는 부모보기가 있어야하는 것처럼 들리므로 새로 고침을 지시하는 childView를 반복 할 수 있습니다.

관련 문제