Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问Aurelia';没有构造函数注入的依赖注入系统_Javascript_Aurelia_Aurelia Di - Fatal编程技术网

Javascript 访问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框架中解析

有没有一种方法可以在没有构造函数注入的情况下访问Aurelia的依赖注入系统

我有一个叫做
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();
。这是预期行为吗?