我正在尝试使用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;
这是路由处理程序:
import Ember from 'ember';
export default Ember.Route.extend({
...
changeTheme: Ember.inject.service(),
...
});
&#13;
我在这里缺少什么?我怀疑语法在某种程度上是错误的,我只是不确定从哪里开始。任何帮助将不胜感激!
答案 0 :(得分:1)
首先,不建议在服务函数内部操作DOM元素。
关于你的问题,
1.您需要包含action
助手来呼叫功能
2.为使其适用于服务功能调用,我们需要提及目标属性
3.在相应的控制器中注入changeTheme服务。
<button id="change-theme" class="btn" {{action "changeBackground" target=changeTheme}}>Change Theme</button>