在父指令和所有子指令之间进行通信的服务,angularjs
Service to communicate between parent directive and all children, angularjs
我有一个指令,我打算包含许多其他指令,并且我打算在页面上有多个实例。我希望能够创建一个非单例服务,我可以为父指令创建一个新的实例,然后使其可用于该树中的所有子指令,以便这些子指令可以影响父指令的行为。同时,一个父指令的服务不能修改其他父指令,并且对于它最初实例化的指令应该是唯一的。
理想情况下,我希望能够从每个子指令调用此服务的函数,然后让它与其他服务或直接与父指令通信。但是,我知道服务是单例的,所以这里的术语不太正确。我可以使用另一种 AngularJS 机制来达到这个目的吗?
此应用程序是使用 AngularJS v1.4.7 使用 TypeScript 编写的 - 感谢您的帮助!
您可以在 parent 指令中创建一个 object 的实例,并将其传递给指令属性中的每个 children。
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
,然后 children 和 parent 可以访问相同的 object。这是一种通过指令属性的依赖注入。
这显然会导致 html 模板中出现更多样板,但至少这不是单例。
我有一个指令,我打算包含许多其他指令,并且我打算在页面上有多个实例。我希望能够创建一个非单例服务,我可以为父指令创建一个新的实例,然后使其可用于该树中的所有子指令,以便这些子指令可以影响父指令的行为。同时,一个父指令的服务不能修改其他父指令,并且对于它最初实例化的指令应该是唯一的。
理想情况下,我希望能够从每个子指令调用此服务的函数,然后让它与其他服务或直接与父指令通信。但是,我知道服务是单例的,所以这里的术语不太正确。我可以使用另一种 AngularJS 机制来达到这个目的吗?
此应用程序是使用 AngularJS v1.4.7 使用 TypeScript 编写的 - 感谢您的帮助!
您可以在 parent 指令中创建一个 object 的实例,并将其传递给指令属性中的每个 children。
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
,然后 children 和 parent 可以访问相同的 object。这是一种通过指令属性的依赖注入。
这显然会导致 html 模板中出现更多样板,但至少这不是单例。