繁体   English   中英

角度$ broadcast事件未触发?

[英]angular $broadcast event is not firing?

我想将数据从父级发送到子级控制器,但是它不是从父级控制器触发事件​​,已经花费了数小时。

ParentCtrl.js

angular.module('angularModelerApp')
    .controller('ModelerCtrl', ['$scope', '$state','$log', 'toastr', 'FileSaver', 'Blob', '$uibModal', '$rootScope', '$timeout', function($scope, $state, $log, toastr, FileSaver, Blob, $uibModal, $rootScope, $timeout) {

            $scope.deleteXml = function(id, toast) {
                var id = $scope.diagramObj._id;
                $scope.modalInstance = $uibModal.open({
                    templateUrl: 'app/modeler/modelerDialog/modelerDialog.html',
                    controller: 'ModelerDialogCtrl'
                });
                $timeout(function() {
                    $rootScope.$broadcast('delete-diagram', {
                        id: id
                    });
                });
            }
        });

childCtrl.js

angular.module('angularModelerApp')
  .controller('ModelerDialogCtrl', function ($scope, $uibModalInstance,$log,diagramService,$rootScope) {

    $scope.cancel = function() {
      $uibModalInstance.dismiss('cancel');
    };
    $scope.$on('delete-diagram',function(e,data){
      console.log('in $on',data);
    });

打开模态时,为什么不传递id呢?

$scope.modalInstance = $uibModal.open({
  templateUrl: 'app/modeler/modelerDialog/modelerDialog.html',
  controller: 'ModelerDialogCtrl',
  resolve: {
    item: function() {
      return $scope.diagramObj._id
    }
   }
 });

通过以下方式在子组件中获取它:angular.module('angularModelerApp')

 .controller('ModelerDialogCtrl', function ($scope, $uibModalInstance,$log,diagramService,$rootScope) {

    $scope.cancel = function() {
      $uibModalInstance.dismiss('cancel');
    };
    $scope.$on('delete-diagram',function(e,data){
      console.log('in $on',data);
    });


    $uibModalInstance.result.then(function (data) {
       console.log(data);
    })
}

暂无
暂无

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

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