Ember Controller扩展为不将变量加载到模板中 [英] Ember Controller extend not loading variables into template
问题描述
我创建了一个 mixin
,一个 controller
和一个 template
.
I've created a mixin
, a controller
, and a 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
及其所有子控制器中.我想在我的 checkIn/index
模板中看到 checkInSettings
,但是它没有显示.
I am trying to load checkInSettings
into the entire CheckInController
and all its subcontrollers. I would like to see checkInSettings
in my checkIn/index
template, but it's not showing up.
什么是有效的,如果我创建了控制器:
What does work is if I create the controller:
// controllers/check_in_index_controller.js
App.CheckInIndexController = Em.Controller.extend(App.LoadCheckInSettings);
但是,我想加载设置以供 CheckIn
的其他区域使用,例如设置页面.
However, I want to load the settings for use in other areas of CheckIn
, such as the settings page.
是否有一种方法可以在控制器或路由中为所有 CheckIn
加载此mixin,以便我可以从 index访问
checkInSettings
代码>或<代码>设置代码>?
Is there a way to load this mixin for the all of CheckIn
, in the controller or route, so that I can access checkInSettings
from index
or settings
?
推荐答案
创建一个控制器CheckInsIndexController.在该控制器上,添加以下两个属性需求:['check_ins'],一个checkinsBinding:'controllers.checkIns.content'.然后,您可以在索引模板中使用checkIns.
Create a controller CheckInsIndexController. On that controller add these two properties needs: ['check_ins'], a checkinsBinding: 'controllers.checkIns.content'. Then you can use checkIns in your index template.
这篇关于Ember Controller扩展为不将变量加载到模板中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!