如何使用Ember服务触发操作?

时间:2016-11-04 22:25:40

标签: ember.js handlebars.js

我正在尝试使用Ember服务在多条路线上触发相同的操作。

这是服务的样子:



import Ember from 'ember';

export default Ember.Service.extend({
  changeBackground() {
    Ember.$('body').toggleClass('bg-color-change');
  }
});




然后我将其粘贴到模板中:



<button id="change-theme" class="btn" {{changeTheme}}>Change Theme</button>
&#13;
&#13;
&#13;

这是路由处理程序:

&#13;
&#13;
import Ember from 'ember';

export default Ember.Route.extend({
  ...
  changeTheme: Ember.inject.service(),
  ...
});
&#13;
&#13;
&#13;

我在这里缺少什么?我怀疑语法在某种程度上是错误的,我只是不确定从哪里开始。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

首先,不建议在服务函数内部操作DOM元素。 关于你的问题,
1.您需要包含action助手来呼叫功能 2.为使其适用于服务功能调用,我们需要提及目标属性 3.在相应的控制器中注入changeTheme服务。

<button id="change-theme" class="btn" {{action "changeBackground" target=changeTheme}}>Change Theme</button>

Sample Twiddle