Javascript 广播事件未触发?

Javascript 广播事件未触发?,javascript,angularjs,Javascript,Angularjs,我想将数据从父控制器发送到子控制器,但它没有从父控制器触发事件我抓狂了好几个小时找到问题,但我失败了,所以决定寻求stackoverflow方面的帮助,知道下面代码中的错误吗 ParentCtrl.js angular.module('angularModelerApp') .controller('ModelerCtrl', ['$scope', '$state','$log', 'toastr', 'FileSaver', 'Blob', '$uibModal', '$rootSco

我想将数据从父控制器发送到子控制器,但它没有从父控制器触发事件我抓狂了好几个小时找到问题,但我失败了,所以决定寻求stackoverflow方面的帮助,知道下面代码中的错误吗

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')


为什么不在打开模式时传递id,例如:

$scope.modalInstance = $uibModal.open({
  templateUrl: 'app/modeler/modelerDialog/modelerDialog.html',
  controller: 'ModelerDialogCtrl',
  resolve: {
    item: function() {
      return $scope.diagramObj._id
    }
   }
 });
以以下方式在子组件中获取它: angular.module('angularModelerApp')


出于好奇,does
$scope.$parent.$broadcast('delete-diagram',{id:id})工作?嗯,可能是时间问题。您是否试图在请求打开事件后将其广播到模式?如果是这样的话,我会挂接到modals
rendered
opened
resolves中,这样您就可以在知道该模态已被渲染后执行代码$scope.modalInstance.rendered.then(函数(){});@John F我使用了您的方法,它工作正常,我在子控制器中看到了数据,但我也看到了错误
错误:[$injector:unpr]未知提供程序:$uibModalInstanceProvider出于好奇,does
$scope.$parent.$broadcast('delete-diagram',{id:id})工作?嗯,可能是时间问题。您是否试图在请求打开事件后将其广播到模式?如果是这样的话,我会挂接到modals
rendered
opened
resolves中,这样您就可以在知道该模态已被渲染后执行代码$scope.modalInstance.rendered.then(函数(){});@John F我使用了您的方法它工作正常,我在子控制器中看到了数据,但我也看到了错误
错误:[$injector:unpr]未知提供程序:$uibModalInstanceProvider我将如何在子控制器中呈现id?我无法构建应用程序父代码在以下行出现语法问题:
返回{id:id}
再次更新..立即检查我在打开模式窗口时遇到此错误
错误:[$injector:unpr]未知提供程序:$uibModalInstanceProvider我在控制器中添加了它以更好地查看它。我将如何在子控制器中呈现id?我无法构建应用程序父代码在以下行出现语法问题:
返回{id:id}
再次更新..立即检查我在打开模式窗口时遇到此错误
错误:[$injector:unpr]未知提供程序:$uibModalInstanceProvider我将其添加到控制器中以更好地查看它。