2014-12-15 5 views
0

보기가 렌더링 될 때마다 코드를 실행하고 싶습니다. 내가 얻을 수있는 가장 가까운 것은 변경 될 수있는 모든 속성을 듣고 afterRender에 대한 실행 루프에서 명시 적으로 일정을 잡는 것이지만 afterRender과 같은 라이프 사이클 후크가있는 것이 좋습니다. 속성 접근법은 렌더링에 영향을 미칠 수있는 것을 기반으로 최신 속성 목록을 유지해야하므로 취약합니다.보기에 대한 모든 afterRender에 대한 일정

컨트롤러 :

App.IndexController = Ember.Controller.extend({ 
    count: 0, 
    actions: { 
    add: function() { 
     var count = this.get('count'); 
     count += 1; 
     this.set('count', count); 
    } 
    } 
}); 

보기 :

App.IndexView = Ember.View.extend({ 
    changed: function() { 
    Ember.run.scheduleOnce('afterRender', this.after); 
    }.observes('controller.count'), 
    after: function() { 
    console.log('after render', this.$('span').text()); 
    } 
}); 

템플릿 :

<button {{action "add"}}>add</button> <span>{{count}}</span> 

http://emberjs.jsbin.com/wujogejeso/3/edit?html,css,js,output

답변

0

코드를 예약하려면 afterRenderchanged 함수 대신 didInsertElement 수명주기 후크를 사용할 수 있습니다.

+0

불행히도, 삽입 이후에 단 한 번만 계획합니다. 후속 실행 루프는'after' 메소드를 실행하지 않습니다. – theazureshadow