Javascript 角度1.5组件与子组件的特定实例通信?
我对Angular很陌生,有一个特殊的情况我不知道如何建模 我有一个Javascript 角度1.5组件与子组件的特定实例通信?,javascript,angularjs,Javascript,Angularjs,我对Angular很陌生,有一个特殊的情况我不知道如何建模 我有一个主要组件: angular .module('synthApp') .component('main', { templateUrl: 'app/components/main.template.html', controller: MainController }); function MainController() { ... } <div> ... <
主要组件:
angular
.module('synthApp')
.component('main', {
templateUrl: 'app/components/main.template.html',
controller: MainController
});
function MainController() {
...
}
<div>
...
<map name="foo">
...
<map name="bar">
...
</div>
它的main.template.html
文件包含我拥有的另一个组件map
组件的两个实例:
angular
.module('synthApp')
.component('main', {
templateUrl: 'app/components/main.template.html',
controller: MainController
});
function MainController() {
...
}
<div>
...
<map name="foo">
...
<map name="bar">
...
</div>
main
controller的方法需要在某些点为foomap
调用addMarker
,在其他点为bar
map调用addMarker
父组件与子组件的特定实例通信的最佳实践是什么?我会使用服务设置发布/订阅,或者在父组件上执行$rootScope.$emit('nameofinance',message)
子实例将通过$rootScope.$on('nameOfInstance',function(message){})设置侦听器
嗯,很有趣。。。它很简单,但我想知道它有多大的可扩展性。。。因为我需要将事件名称绑定到addMarker
、removeMarkers
,以及我将来添加的任何方法。如果使用通道模式,它会有一定的伸缩性。每个主题、用户、产品都可以有一个频道。Jsbin举个例子,
bindings: {
name: '=',
eventName : '@'
}
function MapController(){
var $ctrl = this;
$rootScope.$on($ctrl.eventName, function(dataFromParent) {
// do stuff based on message
})
}