ember.js - Ember 模板中的访问常量

标签 ember.js ember-cli

不确定执行此操作的正确“Ember Way”是什么。

我有以下模板,我想要三个 task-item-list组件实例,每个实例用于不同的 taskState值(value)。显然,我想摆脱魔术数字。

<h4>Tasks:</h4>

<div><h5>Backlog:</h5>
  {{ task-item-list tasks=model taskState=101 }}
</div>

<div><h5>Working:</h5>
  {{ task-item-list tasks=model taskState=202 }}
</div>

<div><h5>Done!</h5>
  {{ task-item-list tasks=model taskState=303 }}
</div>

感谢 this discussion我可以在我的 config/environment.js 中定义常量文件并在模型、测试等中使用它们,但不在我的模板中(据我所知)。

有没有办法使用常量,或者有更好的方法来做到这一点?我可以看到对组件进行子类化,但我认为这不是一个很好的解决方案。

谢谢!

最佳答案

您是否尝试在组件中注入(inject)环境?像这样的东西:

应用程序/初始化程序/注入(inject)-env.js

import env from '../config/environment';

export function initialize(container, application) {
  application.register('env:main', env, { singleton: true, instantiate: false });
  application.inject('component', 'env', 'env:main');
}

export default {
  name: 'inject-env',
  initialize: initialize
};

然后在任何组件中,您将能够获得 config/environment.js 的内容使用 env属性(property)。例如 {{env.environment}}将显示当前环境。

如果您只想在您的 task-item-list 中注入(inject)组件而不是所有组件,您可以使用:
application.inject('component:task-item-list', 'env', 'env:main');

关于ember.js - Ember 模板中的访问常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28901987/

相关文章:

Ember.JS - 提交按钮运行查询并将 JSON 对象返回到模板。我是在服务中、作为模型还是在 route 运行查询?

javascript - 检测对象是否为 Ember 数据

javascript - Ember、Handlebars、Contrib-Ember-Templates 在移动浏览器上生成格式错误的模板

ember.js - 在动态位置插入部分/组件

ember.js - 无法在 ember 中使导航栏项目动态化

ember.js - EmberJS 在有效负载 JSONAPI 中嵌入了项目

ember.js - Ember 数据有很多只加载在 canonicalState 属性中的记录

ember.js - 配置 Ember CLI 以使用 http-mock

javascript - 在 Ember 模板中插入脚本标签

javascript - Ember : Access ember data 'store' object from utility class