覆盖 DS.Store ember-cli
Posted
技术标签:
【中文标题】覆盖 DS.Store ember-cli【英文标题】:Overwrite DS.Store ember-cli 【发布时间】:2014-10-19 01:19:29 【问题描述】:我有一些代码需要在 store.init
上运行。
我尝试扩展app/store.js
中的默认存储,ember-cli 似乎将其作为存储,但this.store
中的对象不是存储
我的店铺定义:
import DS from 'ember-data';
export default DS.Store.extend(
init:function()
console.log('watatLoL')
);
【问题讨论】:
【参考方案1】:> Ember 1.13 的答案:
Store 现在是extends the Service
,所以我们可以创建app/services/store.js
并输入以下代码来扩展/自定义商店:
// app/services/store.js
import DS from 'ember-data';
export default DS.Store.extend(
init: function()
console.log('Using custom store!');
return this._super.apply(this, arguments);
);
Here's a sample twiddle
【讨论】:
谢谢。我一直在努力弄清楚如何在较新的 Ember 版本上执行此操作,我能找到的所有 SO 答案都是针对较旧的实现。从 Ember 2.16.2 开始,这对我有用 很高兴帮助队友:)【参考方案2】:根据 Peter Wagenet 的说法,这在 Ember Data beta 19 中发生了变化。如果您使用的是该版本或更高版本,则该文件现在为 app/stores/application.js
(如果您使用的是 pod,则为 app/application/store.js
)。
覆盖存储是一样的,只是文件名/位置发生了变化。如果您使用的是低于 beta 19 的 Ember Data 版本,则可以使用旧的 app/store.js
文件。
我知道这是旧的,但我不得不回答另一个问题,所以我想我会更新这个。默认情况下,Ember-CLI 解析器将查找 app/store.js
,因此您可以在那里声明您的覆盖存储。
// app/store.js
import DS from 'ember-data';
export default DS.Store.extend(
init: function()
console.log('Using custom store!');
return this._super.apply(this, arguments);
);
【讨论】:
不用担心,我记得在执行此操作时出错,我会测试并选择正确答案,谢谢 :) 从 beta.19 开始,正确的位置现在是app/stores/application.js
(如果您使用的是 pod,则为 app/application/store.js
)。以上是关于覆盖 DS.Store ember-cli的主要内容,如果未能解决你的问题,请参考以下文章