【问题标题】:Depractions while upgrading ember-js to 1.12.0 and ember-cli to 0 0.2.5将 ember-js 升级到 1.12.0 并将 ember-cli 升级到 0 0.2.5 时的缺点
【发布时间】:2023-03-06 02:50:02
【问题描述】:

我正在升级我的 Emberjs => 从 1.10.0 到 1.12.0 Ember-cli => 从 0.1.12 到 0.2.5

虽然我正在弄清楚大部分的弃用,但我无法理解的很少。 PFB同理

  1. 弃用:Ember.required 已弃用,因为它的行为不一致且不可靠。它在哪里使用以及如何更改?
  2. 弃用:lookupFactory 在注册表中被调用。这 initializer API 不再接收容器,你应该使用 instanceInitializer 从容器中查找对象。
    我确实理解这个问题,但我的初始化程序根本不使用查找。 PFB 我的初始化程序的代码。

//app/initializer/abc

initialize: function(registry, app) {
  app.register('store:main', Store);
  // Inject into each route a store property with an instance of store:main
  app.inject('route', 'store', 'store:main');
  // Inject into each controller a store property with an instance of store:main
  app.inject('controller', 'store', 'store:main');
}

//app/initializer/def

initialize: function(registry, app) {
        // Register the session object.
        app.register('session:main', Session);

        // Inject the session object into all controllers.
        app.inject('controller', 'session', 'session:main');
    }
  1. 弃用:使用 {{each}} 的上下文切换形式是 已弃用。请改用块参数形式 ({{#each bar as |foo|}})。看 http://emberjs.com/guides/deprecations/#toc_more-consistent-handlebars-scope 更多细节。
    我在这里了解到{{#each foo in bar itemController="abc"}} 应该改为{{#each bar itemController="abc" as |foo|}}。但是我的代码如下,没有"in",意思就是使用这个上下文!

    {{#each paged itemController="class.adm.man.stop-term"}} 我该如何改变?

【问题讨论】:

  • 这些弃用说明并不总是意味着这是你的错 - 问题可能出现在你使用的任何 ember 插件中。例如,由于使用了 ember-simple-auth,我得到了第二个类似的注释(请参阅此issue

标签: javascript ember.js upgrade ember-cli


【解决方案1】:

按照您的列表:

  1. 似乎是与 ember 数据相关的 issue。如果没有,我敢肯定还有另一个插件使用它,但不是你。因此,您无能为力。
  2. 同样的事情。我已经介绍了一个示例作为评论。你的代码对我来说看起来不错,所以我相信你也无能为力。
  3. Ember 尝试创建更加一致和明确的范围。 in 部分暂时不被弃用,因此最简单的解决方案是添加虚拟in 部分,例如{{#each page in paged itemController="class.adm.man.stop-term"}}。但总的来说,我建议使用更复杂的解决方案 - 创建一个 ItemList 组件并将其重构为:

{{#each paged as |page|}}
  {{item-list model=page}}
{{/each}}

【讨论】:

  • 感谢您的积分。虽然很少注意!对于第一个也是最后一个,我在余烬讨论中得到了答案,对于其他想知道的人-discuss.emberjs.com/t/…。你的第二点很好,我忘了考虑插件和其他库,所以赞成:)。您的第三点是错误的,“in”已被弃用,我们需要使用“as”。如需答案,请参阅我提供的链接:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
相关资源
最近更新 更多