gpt4 book ai didi

angularjs - Angular $emit,$on 不工作

转载 作者:行者123 更新时间:2023-12-03 09:08:55 24 4
gpt4 key购买 nike

我正在尝试学习 Angular 事件监听。用户单击按钮后, Controller 会查询数据库并在按钮的处理程序中返回一个值。我无法将此值传递给 $scope 以便其他函数可以访问数据。

第一个问题:这就是事件监听器的用途吗?还有其他方法可以实现我想要的功能吗?

下一个问题:为什么这段代码不起作用:

app.controller('EmitterCtrl', function($scope) {
console.log("Emitter controller.");

$scope.buttonClick = function() {
console.log("Button clicked!"); // this works
$scope.$emit('myEvent', 'Clicked!'); // child $scope
};

$scope.$on('myEvent'), function(event, data) { // parent $scope
console.log("I heard it!"); // doesn't work
console.log(event);
console.log(word);
};

});

<div ng-controller="EmitterCtrl">
<button type="button" ng-click="buttonClick()">
Click me!
</button>
</div>

用户单击按钮,事件处理程序在 Controller 中触发。该处理程序创建一个子 $scope,以便 $emit 将事件发送到父 $scope。那么事件不会被发出,或者监听器不会捕获它。

最佳答案

$emit dispatches an event upwards ... $broadcast dispatches an event downwards

详细说明

$rootScope.$emit 只让其他 $rootScope 监听器捕获它。当您不希望每个 $scope 都获得它时,这很好。主要是高层沟通。可以将其想象为成年人在房间里互相交谈,这样 children 就听不到他们的声音。

$rootScope.$broadcast 是一种让几乎所有东西都能听到它的方法。这相当于 parent 大喊晚餐准备好了,这样家里的每个人都能听到。

$scope.$emit 是当您希望 $scope 及其所有父级和 $rootScope 听到该事件时。这是一个 child 在家里向 parent 提示(但不是在其他 child 可以听到的杂货店)。

$scope.$broadcast 适用于 $scope 本身及其子级。这是一个 child 对着毛绒玩具窃窃私语,这样他们的 parent 就听不到。

关于angularjs - Angular $emit,$on 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44468352/

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