我有一个类,它的构造函数有两个参数;一个是依赖项,另一个是配置属性:
@inject(Dependency)
class MyClass{
constructor(dependency, config){
}
}
我如何利用 Aurelia 的依赖注入(inject)来自动注入(inject)依赖,但允许类的使用者指定配置值?
最佳答案
这里有一些选项:
foo.js
import {inject} from 'aurelia-framework';
import {FooDependency} from './foo-dependency';
@inject(FooDependency)
export class Foo {
constructor(dep, config) {
}
}
需要-foo.js
import {inject, Factory} from 'aurelia-framework';
import {Foo} from './foo';
@inject(Factory.of(Foo))
export class NeedsFoo {
constructor(fooFactory) {
let config = {};
this.foo = fooFactory(config);
}
}
foo.js
import {inject} from 'aurelia-framework';
import {FooDependency} from './foo-dependency';
class Foo {
constructor(dep, config) {
}
}
@inject(FooDependency)
export class FooFactory {
constructor(dep) {
this.dep = dep;
}
makeFoo(config) {
return new Foo(this.dep, config);
}
}
需要-foo.js
import {inject} from 'aurelia-framework';
import {FooFactory} from './foo';
@inject(FooFactory)
export class NeedsFoo {
constructor(fooFactory) {
let config = {};
this.foo = fooFactory.makeFoo(config);
}
}
foo.js
import {inject} from 'aurelia-framework';
import {FooDependency} from './foo-dependency';
export const configKey = 'config';
@inject(FooDependency, configKey)
export class Foo {
constructor(dep, config) {
}
}
需要-foo.js
import {inject, Container} from 'aurelia-framework';
import {Foo, configKey} from './foo';
@inject(Container)
export class NeedsFoo {
constructor(container) {
let config = {};
let childContainer = container.createChild();
childContainer.registerInstance(configKey, config);
this.foo = childContainer.get(Foo);
}
}
foo.js
export class Foo {
constructor(dep, config) {
}
}
需要-foo.js
import {inject, Container} from 'aurelia-framework';
import {FooDependency} from './foo-dependency';
import {Foo} from './foo';
@inject(Container)
export class NeedsFoo {
constructor(container) {
let config = {};
let dep = container.get(FooDependency);
this.foo = new Foo(dep, config);
}
}
关于javascript - Aurelia辅助注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34793723/
我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel
我有一个Controller,我想为这个Controller创建一个助手,我可以在不包含它的情况下使用它。我尝试像这样创建一个与Controller同名的助手classCars::EnginesController我创建的助手是moduleCars::EnginesHelperdefcheck_fuellogger.debug("chekingfuel")endend我得到的错误是undefinedlocalvariableormethod`check_fuel'for#有没有我遗漏的约定? 最佳答案 如果你真的想在Controll
我今天看到了一个ruby代码片段。[1,2,3,4,5,6,7].inject(:+)=>28[1,2,3,4,5,6,7].inject(:*)=>5040这里的注入(inject)和之前看到的完全不一样,比如[1,2,3,4,5,6,7].inject{|sum,x|sum+x}请解释一下它是如何工作的? 最佳答案 没有魔法,符号(方法)只是可能的参数之一。这是来自文档:#enum.inject(initial,sym)=>obj#enum.inject(sym)=>obj#enum.inject(initial){|mem
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
我经常将预配置的lambda插入可枚举的方法中,例如“map”、“select”等。但是“注入(inject)”的行为似乎有所不同。例如与mult4=lambda{|item|item*4}然后(5..10).map&mult4给我[20,24,28,32,36,40]但是,如果我制作一个2参数lambda用于像这样的注入(inject),multL=lambda{|product,n|product*n}我想说(5..10).inject(2)&multL因为“inject”有一个可选的单个初始值参数,但这给了我......irb(main):027:0>(5..10).inject
我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有
Ruby中防止SQL注入(inject)的好方法是什么? 最佳答案 直接使用ruby?使用准备好的语句:require'mysql'db=Mysql.new('localhost','user','password','database')statement=db.prepare"SELECT*FROMtableWHEREfield=?"statement.execute'value'statement.fetchstatement.close 关于ruby-防止SQL注入(inject
我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan
我正在学习Rails,我注意到Rails不断地使用诸如link_to之类的辅助方法,而不是仅仅使用普通的html。现在我可以理解为什么他们会使用他们会使用一些辅助方法,但我不明白为什么他们更喜欢辅助方法而不是直接编码html。为什么Rails更喜欢辅助方法而不是您必须手动编写html?为什么Rails团队做出这样的设计选择? 最佳答案 在Rails应用程序中,通常使用URL方法和内容方法生成链接,例如这绝对比将它们放入中更易于管理手动标记。">(您正在使用路由器生成这些URL,对吗?如果您硬编码/users/1并决定稍后将其设为/u
在此处阅读有关SO的各种解释,它们是这样描述的:map:Themapmethodtakesanenumerableobjectandablock,andrunstheblockforeachelement注入(inject):Injecttakesavalueandablock,anditrunsthatblockonceforeachelementofthelist.希望你明白为什么我觉得它们表面上看起来很相似。我什么时候会选择一个而不是另一个,它们之间有什么明显的区别吗? 最佳答案 如果您认为inject也别名为reduce,这