0

我认为这一定是一个非常普遍的问题,让我们说像这样的路线

$routeProvider
        .when('/producer', {
            templateUrl: 'ui/producer.html',
            controller: 'ProducerCtrl'
        })
        .when('/consumer', {
            templateUrl: 'ui/consumer.html',
            controller: 'ConsumerCtrl'
        })

根据我对 $scope 生命周期的理解,每次路由发生时,都会创建和初始化一个新的范围/控制器,而旧的会死掉。这会导致在给定的时间有生产者或消费者控制器活着,但不是两者兼而有之。我已经使用 angular Batarang 观察到了这一点。结果,我无法将事件从生产者发送到消费者,反之亦然。

这是非常消耗的,因为事件是为控制器之间的通信而设计的。或者它只适用于控制器和指令?

我确定我错过了一些东西,我不敢相信设计是这样的。

更新:解决方案仅在 rootScope 上触发/侦听所有事件,它可以工作。但我仍然想知道 angularjs 打算以这种方式设计。

4

1 回答 1

1

你应该看看这个问题: 一个控制器可以调用另一个控制器吗?

基本上最佳实践似乎是使用服务而不是使用 rootScope。

于 2013-09-13T06:02:47.800 回答