在Ember模板中访问常量

chr*_*_st 5 ember.js ember-cli

不确定适当的"Ember Way"是做什么的.

我有以下模板,我想要有三个task-item-list组件实例,每个实例用于不同的taskState值.显然,我想摆脱神奇的数字.

<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>
Run Code Online (Sandbox Code Playgroud)

多亏了这个讨论,我可以在我的config/environment.js文件中定义常量并在模型,测试等中使用它们,但在模板中不能(尽我所知).

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

谢谢!

Mar*_*ior 6

您是否尝试在组件中注入env?像这样的东西:

应用程序/初始化/注入-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
};
Run Code Online (Sandbox Code Playgroud)

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

如果您只想在task-item-list组件中注入而不是所有组件,您可以使用:

application.inject('component:task-item-list', 'env', 'env:main');