콜백 메커니즘의 일종으로, 로딩 스피너를 뷰 또는 구성 요소에 넣고 DOM 준비가되면 컨트롤러에 알립니다. 다음은 믹싱의 예입니다. 모든 뷰 또는 구성 요소에 첨부하여로드 한 후 알림을 보낼 수 있습니다.
App.LoadAware = Ember.Mixin.create({
didInsertElement: function() {
this._super();
var target = this.get("loadedNoticeTarget");
Ember.assert("We must have loadedNoticeTarget in LoadAware component or view", target);
target.send("loadAwareLoaded");
}
});
당신은 다음과 같이 적용합니다 :
App.LoadingSpinnerComponent = Ember.Component.extend(App.LoadAware);
을 템플릿에서 : 다음
{{#if isLoading}}
{{loading-spinner loadedNoticeTarget=this}}
{{/if}}
와, 컨트롤러에서 :
App.IndexController = Ember.Controller.extend({
actions: {
goToSlowRoute: function() {
this.set("_waitingForSpinner", true);
this.set("isLoading", true);
},
loadAwareLoaded: function() {
Ember.assert("We must be waiting on spinner at this point", this.get("_waitingForSpinner"));
this.set("_waitingForSpinner", false);
this.transitionToRoute("slowRoute");
}
},
isLoading: false
});
을이 예에서 , sendi로 전환을 시작합니다. 컨트롤러에 goToSlowRoute
메시지를 보냅니다. 전체 JSBin here.
내장 된로드 메커니즘을 사용하지 않는 이유가 있습니까? – Kingpin2k
당신은 모델 후크를 의미합니까? 또는 어떤 "기본 제공"기능을 참조하고 있습니까? 새로운 경로가 준비 될 때까지 이전 경로를 보여주고 싶지만 그 동안에는 회전 경로를 나타내려고합니다. 이 특별한 경우에 나는 로딩 서브 루트를 입력하고 싶지 않습니다. 왜냐하면 제가 할 수있는 한 오래된 서브 우퍼를 보여주고 싶기 때문입니다. – m0c
로드 하위 경로를 언급하고 있습니다. 속도 저하는 페이지에 렌더링되는 템플릿 일뿐입니다. 맞습니까? – Kingpin2k