覆盖插件功能

时间:2016-09-03 13:44:14

标签: ember.js ember-cli monkeypatching

我想覆盖DockYard ember-changeset-validations插件中的方法,以便我可以通过I18n翻译错误消息。 这是函数所在的文件:https://github.com/DockYard/ember-changeset-validations/blob/master/addon/utils/get-messages.js

有什么方法可以覆盖这个getMessages()方法,而不必分叉整个回购?

1 个答案:

答案 0 :(得分:1)

ember-cli使用define / require对。所以你可以在初始化器的某处放置代码

let oldImplementation = require('ember-changeset-validations/utils/get-messages').default;
define('ember-changeset-validations/utils/get-messages', ['exports', 'ember', 'ember-changeset-validations/utils/messages'], function (exports, Ember, defaultMessages) {
  // override module implementation here
  exports['default'] = oldImplementation;
});

通过这种方式,您可以重新定义模块(因此您应该保持模块的接口相同)。但这是丑陋的黑客