【问题标题】:inject instance of store into specific component type将 store 的实例注入特定的组件类型
【发布时间】:2013-11-19 22:30:24
【问题描述】:

我有以下初始化程序,我想在其中将 ember-data 存储注入特定组件类型:

我尝试使用

application.inject

在初始化程序中,但我无法让它工作。我已经用下面的代码破解了它,但我不明白为什么注释代码不起作用:

Ember.onLoad('Ember.Application', function(Application) {
  Application.initializer({
    name: "injectStoreIntoAutosuggest",
    after: "store",
    initialize: function(container, application) {
      window.AutoSuggestComponent.reopen({
        store: container.lookup('store:main')
      });

      // FIXME: why does this not work?
      // application.inject('component:autoSuggest', 'store', 'store:main');
    }
  });
});

我需要 store 的原因是因为我有 this 有这个 api 的组件:

{{auto-suggest source=App.Employee destination=controller.dsChosenEmployees searchPath="fullName" minChars=0}}

我认为能够只指定一个 ember-data 模型并且一切顺利。

以前你可以这样做:

App.Employee.find

但是对于最新的 ember-data,这不再是一种选择。

【问题讨论】:

  • 从技术上讲它应该是'component:auto-suggest',但这不是它不起作用的原因,它似乎是因为它是扩展的,它不是通过注入创建的,我是仍然代码潜水......
  • 而且看起来组件是在初始化程序发生之前实例化的,因此使用这些依赖项的构建永远不会使其进入类。我不太确定如何正确修复它。
  • @kingpin2k 只是 application.inject('component:auto-suggest', 'store', 'store:main'); 为我工作。我不明白你描述的其他问题。
  • 谁知道呢,我的垃圾箱出了点怪事。

标签: ember.js


【解决方案1】:

您的问题在于注入名称。将component:autoSuggest 更改为component:auto-suggest 即可:

Ember.onLoad('Ember.Application', function(Application) {
  Application.initializer({
    name: "injectStoreIntoAutosuggest",
    after: "store",
    initialize: function(container, application) {      
      application.inject('component:auto-suggest', 'store', 'store:main');
    }
  });
});

这里是这个工作http://jsfiddle.net/marciojunior/6VEks/的小提琴

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多