我有很多场景需要点击等来触发页面上另一个位置的行为(单向通信场景)。我现在需要双向通信,在元素 A 中发生的事情可以修改元素 B 后面范围内的特定属性,反之亦然。到目前为止,我一直在使用$rootScope.$broadcast
它来促进这一点,但感觉有点矫枉过正,最终在两个地方都创建了样板:
$scope.$on('event-name', function(event, someArg) {
if(someArg === $scope.someProperty) return;
$scope.someProperty = someArg;
});
$scope.$watch('someProperty', function(newValue) {
$rootScope.$broadcast('event-name', newValue);
});
有没有更好的办法?我想通过一个服务将两个(或三个,或 N 个)范围联系在一起,但如果没有魔术事件名称和样板,我看不出有办法做到这一点。