繁体   English   中英

$ rootscope。$ on和$ on一起广播

[英]$rootscope.$broadcast with $on

我在html控制器中使用Angular js调用函数时遇到问题

    <button  class="btn" ng-click="test()"> Save</button>
    <button  class="btn" ng-click="test();test2()"> New</button>

    $scope.test= function(){
       $http.put(settings.WebApiBaseUrl + 'api/myfile/' , {
            headers: {
                'X-ApiKey': myKey
            }
        }).success(function (data) {          

            $rootScope.$broadcast('data:saved')
            $scope.loading = false;
        }).error(function (data, status, headers, config) {
            $scope.loading = false;               

        });
    }

和其他我调用的功能

     $scope.test2=function(){ $scope.$on('data:saved', function (event,tags) 
    {
    $http.post(settings.WebApiBaseUrl + 'api/myfile/' , {
            headers: {
                'X-ApiKey': myKey
            }
        }).success(function (data) {  

            $scope.loading = false;
        }).error(function (data, status, headers, config) {
            $scope.loading = false;               

        });
    }}

如果我单击一次,它可以正常工作,但ii单击第二次,则第二次循环第二个功能。

您每次单击都在调用test2()

ng-click="test();test2()"

每次订阅该事件:

$scope.test2=function(){ 
    $scope.$on('data:saved', function (event,tags)

您只想订阅一次,因此不应每次单击都调用test2() 只需调用一次,然后测试test()广播事件并进行处理即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM