我创建了一个服务,并在其中声明了存储:
存储.js:
import Service from '@ember/service';
export default class StoreService extends Service {
store = {
lang: 'EN'
}
}
我还从以下路线进入了商店:
第一个.js:
import Route from '@ember/routing/route';
import { inject } from '@ember/service';
export default Route.extend({
store: inject(),
model() {
console.log(this.store);
return this.store;
}
});
和模板.第一.hbs:
<div class="wrapper">
<h3>First</h3>
<hr class="gold">
<p><button type="button">CN</button></p>
{{model.store.lang}}
</div>
{{outlet}}
请告诉我如何通过按“CN”按钮从路线更改存储中的数据(将lang设置为“CN”)?
祝你好运
2条答案
按热度按时间lnlaulya1#
如果你是usign ember〉= 3.16.在你的store.js跟踪状态像
然后在first.hbs中添加到按钮
<button {{on "click" this.changeLanguajeToCN}} type="button">CN</button>
最后在控制器中(您需要创建此文件)first.js
qxsslcnc2#
在Pablo's answer上扩展,我建议跟踪
lang
属性本身,而不是包含它的对象。此外,我宁愿使用一个不同的名称,因为
store
是误导,人们会认为你试图使用Ember Data's Store,这是默认情况下可用的Ember项目和作为一个属性的路线。请参阅此Twiddle以查看实际运行的代码:
https://ember-twiddle.com/02ac6f708d1861816df0f1bce504729a
第一个