Javascript 广播事件未触发?
我想将数据从父控制器发送到子控制器,但它没有从父控制器触发事件我抓狂了好几个小时找到问题,但我失败了,所以决定寻求stackoverflow方面的帮助,知道下面代码中的错误吗 ParentCtrl.jsJavascript 广播事件未触发?,javascript,angularjs,Javascript,Angularjs,我想将数据从父控制器发送到子控制器,但它没有从父控制器触发事件我抓狂了好几个小时找到问题,但我失败了,所以决定寻求stackoverflow方面的帮助,知道下面代码中的错误吗 ParentCtrl.js angular.module('angularModelerApp') .controller('ModelerCtrl', ['$scope', '$state','$log', 'toastr', 'FileSaver', 'Blob', '$uibModal', '$rootSco
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})代码>工作?嗯,可能是时间问题。您是否试图在请求打开事件后将其广播到模式?如果是这样的话,我会挂接到modalsrendered
或opened
resolves中,这样您就可以在知道该模态已被渲染后执行代码$scope.modalInstance.rendered.then(函数(){});@John F我使用了您的方法,它工作正常,我在子控制器中看到了数据,但我也看到了错误错误:[$injector:unpr]未知提供程序:$uibModalInstanceProvider出于好奇,does$scope.$parent.$broadcast('delete-diagram',{id:id})代码>工作?嗯,可能是时间问题。您是否试图在请求打开事件后将其广播到模式?如果是这样的话,我会挂接到modalsrendered
或opened
resolves中,这样您就可以在知道该模态已被渲染后执行代码$scope.modalInstance.rendered.then(函数(){});@John F我使用了您的方法它工作正常,我在子控制器中看到了数据,但我也看到了错误错误:[$injector:unpr]未知提供程序:$uibModalInstanceProvider我将如何在子控制器中呈现id?我无法构建应用程序父代码在以下行出现语法问题:返回{id:id}
再次更新..立即检查我在打开模式窗口时遇到此错误错误:[$injector:unpr]未知提供程序:$uibModalInstanceProvider我在控制器中添加了它以更好地查看它。我将如何在子控制器中呈现id?我无法构建应用程序父代码在以下行出现语法问题:返回{id:id}
再次更新..立即检查我在打开模式窗口时遇到此错误错误:[$injector:unpr]未知提供程序:$uibModalInstanceProvider我将其添加到控制器中以更好地查看它。