Javascript 访问Aurelia';没有构造函数注入的依赖注入系统
有没有一种方法可以在没有构造函数注入的情况下访问Aurelia的依赖注入系统 我有一个叫做Javascript 访问Aurelia';没有构造函数注入的依赖注入系统,javascript,aurelia,aurelia-di,Javascript,Aurelia,Aurelia Di,有没有一种方法可以在没有构造函数注入的情况下访问Aurelia的依赖注入系统 我有一个叫做Box的类。我需要知道它的一个属性何时更改,以便更新我的验证。我发现我可以从这里使用bindingEngine.propertyObserver 但是我的Box实例是由BreezeJs创建的,而不是由Aurelia创建的。因此,使用@inject(或者在我的例子中使用@autoinject)来获取绑定引擎的实例是行不通的 我看到aurelia.container.get将让我从aurelia的DI框架中解析
Box
的类。我需要知道它的一个属性何时更改,以便更新我的验证。我发现我可以从这里使用bindingEngine.propertyObserver
但是我的Box
实例是由BreezeJs
创建的,而不是由Aurelia创建的。因此,使用@inject
(或者在我的例子中使用@autoinject
)来获取绑定引擎的实例是行不通的
我看到aurelia.container.get将让我从aurelia的DI框架中解析。但这需要Aurelia
对象的当前实例。我能看到的唯一办法就是。。。构造函数注入
所以,要绕过构造函数注入,您需要。。。构造函数注入
我希望我遗漏了一些东西,还有另一种方法可以获得bindingEngine
的实例,而无需构造函数注入
注意:现在我将把我的变量转换成javascript属性,并自己触发一个已更改的事件。但我知道这会让我陷入肮脏的检查(如果您想知道breeze实体的属性何时更改,请使用entityAspect.propertyChanged
事件:
order.entityAspect.propertyChanged.subscribe(
功能(属性更改){
//只要“订单”实体上的属性值发生更改,就会执行此代码。
var entity=propertyChangedArgs.entity;//注意:entity==order
var propertyNameChanged=propertyChangedArgs.propertyName;
var oldValue=propertyChangedArgs.oldValue;
var newValue=propertyChangedArgs.newValue;
});
不建议绕过构造函数注入。它违反了,但是有一种机制可以做到这一点:
main.js
导出功能配置(aurelia){
container.makeGlobal();
...
}
box.js
从“aurelia依赖项注入”导入{Container};
让bindingEngine=Container.instance.get(bindingEngine);
谢谢!您使用breeze的更改通知是正确的。(我太喜欢Aurelia的系统了,我忘了。再次感谢!使用BindingEngine
而不是breeze的系统不好吗?我连接了绑定引擎,它工作得很好。我想我个人更喜欢BindingEngine
,但如果breeze的系统有什么原因,我想知道它。如果你使用Aurelia breeze,我想知道它是什么。)e binding system使用的是breeze系统,因此最终您将间接使用breeze系统。我将使用本机breeze系统。它避免了绕过构造函数注入的不良模式。@Jeremydany现在我尝试了使用aurelia依赖项-injection@1.3.1
现在它可以在没有aurelia.container.makeGlob的情况下工作al();
。这是预期行为吗?