Ember Controller扩展为不将变量加载到模板中 [英] Ember Controller extend not loading variables into template

查看:24
本文介绍了Ember Controller扩展为不将变量加载到模板中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆