$broadcast 仅在使用有限字符时触发
$broadcast only firing when limited characters used
尝试使用 Angular 的 $broadcast
,当我测试它并使用字符串 'hi' 并在兄弟控制器中观察它时,它工作正常,就像这样:
//first controller
app.controller('colourKeyCtrl', colourKeyCtrl);
function colourKeyCtrl($scope, $timeout, patents, patentPhasesService) {
vm.$onInit = function() {
$scope.$broadcast('hi');
}
}
//second controller
app.controller('graphDonutCtrl', graphDonutCtrl);
function graphDonutCtrl($scope, patents, patentPhasesService, $timeout) {
$scope.$on('hi', function(event, opt){
alert('hello there')
})
}
一旦我将字符串更改为其他任何内容,例如 phaseChange
,它就无法在第二个控制器中调用 $on
方法。不知道为什么。我试图将 $broadcast
包装在 $timeout
方法中,但这并没有解决问题。
问题
我使用 $broadcast
的方式不对还是我的语法不正确?
.state('dashboard', {
url: '/dashboard',
views: {
'@': {
templateUrl: 'p3sweb/app/components/dashboard/views/dashboard.htm',
controller: 'dashboardCtrl',
controllerAs: '$ctrl'
},
'colourkeywidget@dashboard': {
templateUrl: 'p3sweb/app/components/dashboard/views/ui-views/colour-key-widget.htm',
controller: 'colourKeyCtrl',
controllerAs: '$ctrl'
},
'graphdonutwidget@dashboard': {
controller: 'graphDonutCtrl',
controllerAs: '$ctrl',
templateUrl: 'p3sweb/app/components/dashboard/views/ui-views/graph-donut-widget.htm',
}
}
})
$broadcast
从当前范围开始,向下到子范围。
$emit
从当前作用域开始并沿作用域链上升。
没有事件分派方法去兄弟 scopes.You 需要 $emit
到父级并在那里处理事件以 $broadcast
它返回。
尝试使用 Angular 的 $broadcast
,当我测试它并使用字符串 'hi' 并在兄弟控制器中观察它时,它工作正常,就像这样:
//first controller
app.controller('colourKeyCtrl', colourKeyCtrl);
function colourKeyCtrl($scope, $timeout, patents, patentPhasesService) {
vm.$onInit = function() {
$scope.$broadcast('hi');
}
}
//second controller
app.controller('graphDonutCtrl', graphDonutCtrl);
function graphDonutCtrl($scope, patents, patentPhasesService, $timeout) {
$scope.$on('hi', function(event, opt){
alert('hello there')
})
}
一旦我将字符串更改为其他任何内容,例如 phaseChange
,它就无法在第二个控制器中调用 $on
方法。不知道为什么。我试图将 $broadcast
包装在 $timeout
方法中,但这并没有解决问题。
问题
我使用 $broadcast
的方式不对还是我的语法不正确?
.state('dashboard', {
url: '/dashboard',
views: {
'@': {
templateUrl: 'p3sweb/app/components/dashboard/views/dashboard.htm',
controller: 'dashboardCtrl',
controllerAs: '$ctrl'
},
'colourkeywidget@dashboard': {
templateUrl: 'p3sweb/app/components/dashboard/views/ui-views/colour-key-widget.htm',
controller: 'colourKeyCtrl',
controllerAs: '$ctrl'
},
'graphdonutwidget@dashboard': {
controller: 'graphDonutCtrl',
controllerAs: '$ctrl',
templateUrl: 'p3sweb/app/components/dashboard/views/ui-views/graph-donut-widget.htm',
}
}
})
$broadcast
从当前范围开始,向下到子范围。
$emit
从当前作用域开始并沿作用域链上升。
没有事件分派方法去兄弟 scopes.You 需要 $emit
到父级并在那里处理事件以 $broadcast
它返回。