mixin
、controller
、およびを作成しましたtemplate
。
// checkIn/index.js.handlebars
<div class="page-header text-center">
<h2>
Check in for
{{#unless checkInSettings.loaded}}
<span class="icon-spinner icon-spin"></span>
{{else}}
<span class="text-info">{{checkInSettings.programName}}</span> - <span class="text-info">{{checkInSettings.programStartDate}}</span>
{{/unless}}
</h2>
</div>
// controllers/check_in_controller.js
App.CheckInController = Em.Controller.extend(App.LoadCheckInSettings);
// mixins/load_check_in_settings.js
App.LoadCheckInSettings = Em.Mixin.create({
init: function() {
this._super();
if (!this.get('checkInSettings')) {
this.set('checkInSettings', App.CheckInSettings.create());
this.get('checkInSettings').set('isLoading', true);
var self = this;
$.getJSON('/check_in/settings').then(function(data) {
self.get('checkInSettings').set('isLoading', false);
self.get('checkInSettings').set('programName', data.program_name);
self.get('checkInSettings').set('programAcademicYear', data.program_academic_year);
self.get('checkInSettings').set('programStartDate', data.program_start_date);
self.get('checkInSettings').set('loaded', true);
});
}
}
});
checkInSettings
全体CheckInController
とそのすべてのサブコントローラーにロードしようとしています。テンプレートに表示checkInSettings
したいのですが、表示されません。checkIn/index
コントローラーを作成するとうまくいきます:
// controllers/check_in_index_controller.js
App.CheckInIndexController = Em.Controller.extend(App.LoadCheckInSettings);
CheckIn
ただし、設定ページなど、の他の領域で使用するために設定をロードしたいと考えています。
またはからCheckIn
アクセスできるように、コントローラーまたはルートのすべてに対してこの mixin をロードする方法はありますか?checkInSettings
index
settings