Joh*_*ika 23 ember.js ember-cli
我想重新打开Ember或Ember Data框架类.使用Ember CLI,在哪里放置这些以使它们获得初始化属性的正确位置?这是我想做的事情的一个例子:
import DS from 'ember-data';
DS.Model.reopen({
rollback: function() {
this._super();
// do some additional stuff
}
});
Run Code Online (Sandbox Code Playgroud)
GJK*_*GJK 22
我认为执行具有副作用的模块的最佳方法是创建初始化程序.像这样的东西:
// app/initializers/modify-model.js
import DS from 'ember-data';
let alreadyRun = false;
export default {
name: 'modify-model',
initialize() {
if (alreadyRun) {
return;
} else {
alreadyRun = true;
}
DS.Model.reopen({
// ...
});
}
};
Run Code Online (Sandbox Code Playgroud)
初始化程序由Ember-CLI自动运行,因此无需自行调用它们.
编辑:正如Karim Baaba指出的那样,初始化程序可能不止一次运行.为了方便,我已经包含了alreadyRun一面旗帜.
Kar*_*aba 18
使用初始化程序就足够了,但编写测试时并不是一个很好的做法,因为它们会多次运行.
以下是如何在focusIn触发
时重新打开文本字段视图以清除输入的示例app/overrides/textfield.js:
import Ember from 'ember';
export default Ember.TextField.reopen({
focusIn: function(evt) {
this._super(evt);
this.set('value', '');
}
});
Run Code Online (Sandbox Code Playgroud)
app/app.js
import './overrides/textfield';
Run Code Online (Sandbox Code Playgroud)
该模式非常简单,可以很容易地使用 DS.Model
| 归档时间: |
|
| 查看次数: |
3508 次 |
| 最近记录: |