Ember.js Model.reopen()导致存储在加载第一页时返回ProxyObject

Ember.js Model.reopen()导致存储在加载第一页时返回ProxyObject,ember.js,ember-data,Ember.js,Ember Data,我想全局覆盖所有模型的Model.save()。所以我创建了初始化器 import DS from 'ember-data'; export function initialize(appInstance) { DS.Model.reopen({ save() { return this._super(...arguments); } }); } export default { after: ['ember-data'], name: 'mode

我想全局覆盖所有模型的
Model.save()
。所以我创建了初始化器

import DS from 'ember-data';

export function initialize(appInstance) {
  DS.Model.reopen({
    save() {
      return this._super(...arguments);
    }
  });
}

export default {
  after: ['ember-data'],
  name: 'model-save',
  initialize: initialize
};
看起来不错,但只能重新加载页面,否则,
save()
未定义,模型为ProxyObject,其中包含所需的模型

// route
model() {
  return this.get('store').findRecord('product', 1); 
}

// controller
const model = this.get('model');
console.log(model);
console.log(model.save);
console.log(model.content.save); // contains working save function
首次启动时的控制台输出:

F5后的控制台输出:

这足以打破它

// app/app.js
import Ember from 'ember';
import Resolver from './resolver';
import loadInitializers from 'ember/load-initializers';
import config from './config/environment';
import DS from 'ember-data';
DS.Model.reopen();
我试图在clean项目上复制这个bug,但没有成功。这是唯一一个带有
重新打开()
的地方。它在chrome和firefox中的行为相同

编辑:


我对这个问题进行了大量编辑,因为旧版本关注的是错误的错误原因。

许多小时后,我发现这个错误是基于登录页发生的,与浏览器和后来的核心原因没有任何关系。我必须承认,我找到了创建代理并通过链接将其传递给助手的代码。谢谢大家的帮助。

您可能应该指定它应该在
余烬数据
初始值设定项之后运行。谢谢,但这没有帮助。我用屏幕截图更新了问题,当控制台在引导过程中打开时。也许这会提供一些线索。奇怪。第一个屏幕截图(封闭控制台)使它看起来像
this.get('model')
返回的是
Ember.ObjectProxy
的实例,而不是
DS.Model
,这解释了为什么它没有
save
方法。我不知道为什么
this.get('model')
的值会根据控制台的打开或关闭而更改。您是对的,代理对象的内容确实是所需的模型。我也在firefox中测试了这个,在firefox中也是如此。如果控制台关闭了,您是如何看到它的输出的?