gpt4 book ai didi

ember.js - 如何使用 Ember CLI 在 Ember 中进行依赖注入(inject)?

转载 作者:行者123 更新时间:2023-12-01 09:24:19 25 4
gpt4 key购买 nike

首先,我制作了一个没有 Ember CLI 的小型 Ember 应用程序。

我有这段代码。

window.MyApp = Ember.Application.create({
ready: function() {
this.register('session:current', MyApp.SessionController, { singleton: true });
this.inject('controller', 'session', 'session:current');
}
});

这行得通。

然后我决定使用 Ember CLI 从头开始​​重写所有内容。

我编辑了文件 app/app.js 并添加了 ready 钩子(Hook),就像我之前的版本一样。

var App = Ember.Application.extend({
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix,
Resolver: Resolver,
ready: function() {
this.register('session:current', App.SessionController, { singleton: true });
this.inject('controller', 'session', 'session:current');
}
});

这不起作用。

session Controller 确实存在。这就是 app/controllers/session.js

文件的内容
export default Ember.Controller.extend({
isLoggedIn: false,
});

我得到的错误信息是

TypeError: Attempting to register an unknown factory: `session:current`

它出现在浏览器中。

我在 Google 上搜索了该消息,但在 Ember CLI 中没有发现任何关于依赖注入(inject)的信息。

有什么想法吗?

最佳答案

在 ember-cli 中你可以使用 ember generate service <name of service>ember generate initializer <name of initializer>构建 stub 来实现这一点,这比摆弄 app.js 要好得多.

你创建一个服务基本上是这样的:

// app/services/notifications.js
import Ember from 'ember';

export default Ember.Object.extend({
initNotifications: function() {
// setup comes here
}.on('init'),

// Implementation snipped, not relevant to the answer.
});

还有初始化器,它将服务注入(inject)到需要它的应用程序的组件中:

// app/initializers/notifications-service.js
import Notifications from '../services/notifications';

export default {
name: 'notification-service',
after: 'auth-service',

initialize: function( container, app ) {
app.register( 'notifications:main', Notifications, { singleton: true } );
app.inject( 'component:system-notifications', 'notificationService', 'service:notifications' );
app.inject( 'service:auth', 'notificationService', 'service:notifications' );
}
};

这样,它就变成了 notificationService在指定的组件上。

关于 Ember 中依赖注入(inject)主题的文档可以在 http://emberjs.com/guides/understanding-ember/dependency-injection-and-service-lookup/ 找到。

关于ember.js - 如何使用 Ember CLI 在 Ember 中进行依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27932790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com