Ember CLI:在哪里重新打开框架类 [英] Ember CLI: where to reopen framework classes

查看:133
本文介绍了Ember CLI:在哪里重新打开框架类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想重新打开Ember或Ember Data框架类。使用Ember CLI,放置它们的地方在哪里可以初始化属性?这是我想做的一个例子:

 从ember-data导入DS; 

DS.Model.reopen({
rollback:function(){
this._super();
//做一些额外的东西
}
});


解决方案

我认为最好的方式来执行有侧面的模块效果将是创建初始化程序。这样的东西:

  // app / initializers / modify-model.js 
从'ember-data ;

let alreadyRun = false;

export default {
name:'modify-model',
initialize(){
if(alreadyRun){
return;
} else {
alreadyRun = true;
}

DS.Model.reopen({
// ...
});
}
};

初始化程序由Ember-CLI自动运行,因此您无需自己调用它们。 >

编辑:正如Karim Baaba指出的,初始化器可能运行不止一次。对于一个简单的方法,我已经包括一个 alreadyRun 标志。


I'd like to reopen Ember or Ember Data framework classes. Using Ember CLI, where is the right place to put these so that they get initialized property? Here's an example of something I'd like to do:

import DS from 'ember-data';

DS.Model.reopen({
  rollback: function() {
    this._super();
    // do some additional stuff
  }
});

解决方案

I think the best way to execute modules that have side effects would be to create an initializer. Something like this:

// 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({
            // ...
        });
    }
};

Initializers are automatically run by Ember-CLI, so there's no need to call them yourself.

EDIT: As Karim Baaba pointed out, it's possible for initializers to run more than once. For an easy way around that, I've included an alreadyRun flag.

这篇关于Ember CLI:在哪里重新打开框架类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆