Angularjs - 广播事件被双重攻击

时间:2014-10-08 10:56:49

标签: javascript angularjs events broadcast rootscope

我有这个简单的代码:

<modal ng-controler="Contacts">
//add new contact stuffs
</modal>

<div ng-controller="Contacts">
// show the new contact when added
</div>

.controller('Contacts', function ($scope, contactsFactory) {

contactsFactory.doSomething();
$scope.$on('contacts:addedNewContact', function (event, data) {

      console.log('yo');
});
})
.factory('contactsFactory', function ($rootScope) {
var addNew = function (username, email) { //facoltative, we can get them via email OR username

          return $http({
            'method':'POST',
            'url': appWS + '/api/contact',
            'data': {
              'email':email,
              'username':username
            }
          }).then(function (response) {

            if (response && response.status === 200) {

              $rootScope.$broadcast('contacts:addedNewContact', response.data);
            }

          }).catch(function (err) {

            $rootScope.$broadcast('contacts:errorAddingNewContact');
            $window.console.error('Error while retrieving contact user data: ' + err);
          });
        };

    return {
      'addNew':addNew
    };
});

广播联系人:addedNewContact实际上放了2次&#34;哟&#34;在控制台中。

我无法理解为什么它被双击而不是一次。

感谢任何帮助,谢谢

1 个答案:

答案 0 :(得分:1)

你有两个使用控制器的div,所以它被实例化两次,两次注册监听器,并且两个监听器都会被触发。