关于`initializer` API的Ember 1.12弃用警告

时间:2015-05-20 15:55:30

标签: ember.js ember-cli

我将ember / ember-cli应用程序升级为ember 1.12。我现在收到以下弃用警告:

DEPRECATION: `lookup` was called on a Registry. The `initializer` API no longer receives a container, 
and you should use an `instanceInitializer` to look up objects from the container. 
See http://emberjs.com/guides/deprecations#toc_deprecate-access-to-instances-in-initializers for more details.

看一下这个例子,我看到如下内容:

App.initializer({
  name: "clock",

  initialize: function(container, application) {
    application.register("clock:main", Clock);
    var clock = container.lookup("clock:main");
    clock.setStartTime(Date.now());
  }
});

应改为:

App.initializer({
  name: "clock",

  initialize: function(registry, application) {
    application.register("clock:main", Clock);
  }
});

App.instanceInitializer({
  name: "clock",

  initialize: function(instance) {
    var clock = instance.container.lookup("clock:main");
    clock.setStartTime(Date.now());
  }
});

但我根本没有像这样的代码。 ember-cli 0.2.5应用程序中的内容会导致此警告?

2 个答案:

答案 0 :(得分:2)

Ember Data最有可能导致这个问题,我昨天在其中一个应用程序上看到它,你可以查看堆栈跟踪,并可能看出谁是罪魁祸首。

https://github.com/emberjs/data/issues/3051

enter image description here

答案 1 :(得分:2)

此问题已在 ember-data v1.0.0-beta.19 中修复,我使用v1更改了 bower.json 文件中的ember-data版本。 0.0-beta.19,然后我运行bower install,最后运行我的ember应用程序。已弃用的警告消息已消失。