AngularJS:如何避免 - 从app.js调用的广播事件被触发两次?

时间:2015-06-22 08:53:59

标签: javascript android jquery angularjs

在app.js中的

我在$ rootScope上使用回调函数广播来获取第二个控制器上的触发方法。

function onSuccess(state) {
          if (state != true) {
          } else {
              $rootScope.$broadcast('proximityCatched', null);
          }
          //console.log('Proximity state: ' + (state ? 'near' : 'far'));
      };

在控制器上我有听众:

$rootScope.$on('proximityCatched', function () {
            alert("TEST");
        });

问题在于警报(“TEST”);被触发两次。

我尝试使用stopPropagation或在正常范围内使用广播找到任何有效的解决方案,但没有运气。

我怎么能以正确的方式做到这一点?

感谢您的任何建议。

编辑:路由器配置:

.config(function($stateProvider, $urlRouterProvider) {
      $stateProvider
          .state('game', {
              url: "/game",
              templateUrl: "templates/game.html",
              controller: "GameCtrl"
          })
          .state('home', {
              url: "/home",
              templateUrl: "templates/home.html",
              controller: "HomeCtrl"
          })
        // if none of the above states are matched, use this as the fallback
        $urlRouterProvider.otherwise('/home');
    });

1 个答案:

答案 0 :(得分:1)

如果您连接控制器两次,它将调用两次。

检查您是否在routes配置和html(使用ng-controller)中附加控制器,如果您连接两次(使用两种方式),请删除一个。

cheerz