gpt4 book ai didi

angularjs - 在父指令和所有子指令之间进行通信的服务,angularjs

转载 作者:搜寻专家 更新时间:2023-10-30 21:53:46 26 4
gpt4 key购买 nike

我有一个指令,我打算包含许多其他指令,并且我打算在页面上有多个实例。我希望能够创建一个非单例服务,我可以为父指令创建一个新的实例,然后使其可用于该树中的所有子指令,以便这些子指令可以影响父指令的行为。同时,一个父指令的服务不能修改其他父指令,并且对于它最初实例化的指令应该是唯一的。

理想情况下,我希望能够从每个子指令调用此服务的函数,然后让它与其他服务或直接与父指令通信。但是,我知道服务是单例的,所以这里的术语不太正确。我可以使用另一种 AngularJS 机制来达到这个目的吗?

此应用程序是使用 AngularJS v1.4.7 使用 TypeScript 编写的 - 感谢您的帮助!

最佳答案

您可以在父指令中创建一个对象的实例,并将其传递给指令属性中的每个子对象。

class parentDirective {
instanciatedService : MyService;
constructor() {
this.instanciatedService = new MyService();
}
}

template : `
<parent>
<child custom-service="vm.instanciatedService"></child>
</parent>
`,
controllerAs : 'vm'

在 child 的指令中

bindToController /* or scope */ {
customService: "="
},

在 parent 指令中,您实例化了 instanciatedService,然后子级和父级可以访问同一个对象。这是一种通过指令属性的依赖注入(inject)。

这显然会导致 html 模板中出现更多样板,但至少这不是单例。

关于angularjs - 在父指令和所有子指令之间进行通信的服务,angularjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34455526/

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