覆盖插件功能

Override addon function

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

有什么方法可以覆盖此 getMessages() 方法而不必分叉整个存储库?

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;
});

这样您将重新定义模块(因此您应该保持模块的接口相同)。但它是丑陋的 hack