gpt4 book ai didi

javascript - $broadcast 仅在使用有限字符时触发

转载 作者:行者123 更新时间:2023-12-03 02:22:02 25 4
gpt4 key购买 nike

尝试使用 Angular 的 $broadcast,当我测试它并使用字符串“hi”并在同级 Controller 中监视它时,它工作正常,如下所示:

//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),它就无法调用第二个 Controller 中的 $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 从当前作用域开始,沿着作用域链向上移动。

没有进入同级作用域的事件调度方法。您需要$emit到父级并在那里处理事件以$broadcast将其返回下来。

关于javascript - $broadcast 仅在使用有限字符时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49115988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com