【发布时间】:2017-11-12 02:16:43
【问题描述】:
我正在尝试学习 Angular 事件监听。用户单击按钮后,控制器会查询数据库并在按钮的处理程序中返回一个值。我无法将此值传递给$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>
用户单击按钮,事件处理程序在控制器中触发。处理程序创建一个子$scope,因此$emit 将事件发送给父$scope。然后不会发出事件,或者侦听器没有捕获它。
【问题讨论】:
-
我做了一些测试,我的例子只有一个 $scope,所以 $emit 和 $on 在同一个 $scope 上。在我正在处理的项目中,处理程序($scope 函数)似乎创建了自己的子范围,但现在我发现这是错误的。我的项目肯定有其他问题。
标签: angularjs addeventlistener eventemitter