问题标签 [aurelia-di]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 无需构造函数注入即可访问 Aurelia 的依赖注入系统
有没有办法在没有构造函数注入的情况下访问 Aurelia 的依赖注入系统。
我有一堂课叫Box
. 我需要知道它的某个属性何时发生变化,以便更新我的验证。我发现我可以bindingEngine.propertyObserver
从这个答案中使用。
但是我的实例Box
是由创建的BreezeJs
,而不是 Aurelia。所以使用@inject
(或@autoinject
在我的情况下)获取实例bindingEngine
是行不通的。
我看到aurelia.container.get
会让我从 Aurelia 的 DI 框架中解决。但这需要Aurelia
对象的当前实例。我能看到的唯一方法是......构造函数注入!
所以,要绕过构造函数注入,你需要......构造函数注入!
我希望我遗漏了一些东西,并且还有另一种方法可以在bindingEngine
没有构造函数注入的情况下获取实例。
注意:现在我只需将变量转换为 javascript 属性并自行触发更改的事件。但我知道这会让我转向脏检查...... :(
aurelia - 当父级是Aurelia中相同的组件类型时传递父级
编辑:这个问题曾经的标题是“当父级在 Aurelia 中的类型相同时通过 DI 获取父级”,但由于我的元素是嵌套的,因此将父级绑定到元素更有意义,因此标题已更改来反映这一点。
如果我有一个自定义元素,Thing
它有一个子元素Thing
(有另一个子元素Thing
等),当类相同时如何注入父实例?
作为进一步的复杂性,根Thing
元素将没有父元素,因此 DI 需要允许可选注入。
javascript - Aurelia 注入模拟依赖
我有这个 aurelia 组件用于向用户显示一个提要,它依赖于一个名为 Api 的自定义 API 服务类来获取提要。Api 类有一个 get() 函数,该函数又使用 HttpClient 来获取数据。
尝试测试组件我想模拟服务类,特别是 get 函数,以返回合适的测试数据并通过 aurelia 的 DI 容器将此模拟注入到组件中。我遇到问题的 DI 部分。
这是组件的js文件的相关部分
以及我测试中的相关代码
据我所知,这段代码实际上是按照我的预期工作的。在创建组件时,我的 customConfig 函数被调用,mockApi 实例被记录到控制台。
然而,在引导过程的后期,组件构造函数仍然接收实际 Api 服务类的实例,而不是我注册到容器的模拟实例。
花了最后几个小时试图挖掘任何文档或示例来做这样的事情但没有成功,所以如果有人能提供帮助,我将不胜感激。
或者,如果有/有替代方法来实现这一点,那也同样有效。
javascript - 如何在 Aurelia-dialog 中从 DI 容器注入对象
使用 Aurelia,您可以将东西放入容器中,然后注入。容器状态不在对话框中共享。
有没有办法获取我在容器中注入的数据,并在对话框中使用它?
代码示例
主页.js
自定义元素.js
查找字段-dialog.js
aurelia - 什么模式用于在 aurelia 中提供自定义元素或属性的全局配置?
我知道可以导出配置功能,也可以将组件注册为全局资源。但是,当您的组件提供可以被覆盖的“默认”配置时,您使用什么模式?这需要在配置阶段发生,并且需要应用于组件的所有实例。您是否使用带有静态成员(打字稿)或其他东西的类?或者,我可以创建配置实例、设置属性并将其以某种方式添加到 DI 容器中,以便所有依赖组件现在都获取该实例吗?
这是我配置的 main.ts。如何从上面覆盖默认配置?
dependency-injection - Create a new instance of a class that is using dependency injection in Aurelia
I want to create a factory that is able to create a new instance of a class (MyClass, implementing an abstract class) that is using dependency injection.
I would like the factory to look like this:
Factory
However, the EventAggregator is not injected into MyClass when I take this approach.
How can I do this?
Interface
Class
Thanks in advance!
aurelia - 从主路由器内的页面访问另一个模型视图
我正在尝试找到一种方法来创建自定义视图模型并使其功能可以从主路由器视图元素中的页面访问。这个自定义视图模型,在我的例子中称为“secondbar”,应该位于主导航栏下,并且应该包含登录状态(“登录为 ...”/“未登录”)。
在我的路由器视图中,其中一个页面是登录页面。成功登录后,我希望能够直接调用“secondbar”的功能,以便在不刷新页面的情况下更改登录状态。
我试图在 login.js 文件中注入“secondbar”类;这样我可以访问功能,但页面上的消息不会改变(似乎我正在访问“secondbar”的另一个实例)。我还尝试直接在主导航栏上打印出相同的消息,但似乎这不是正确的方法,它也不起作用。
有什么方法可以直接访问“secondbar”类(浏览器中显示相同的实例)并从路由器视图内的页面调用位于那里的函数?
应用程序.html
应用程序.js