如何解决JavaScript使用$ scope$ emit和$ scope$ on
首先,父子范围关系确实很重要。你有两种可能性发出某些事件:
-
$broadcast
-将事件向下分发到所有子范围, -
$emit
-通过范围层次结构向上调度事件。
我对你的控制器(作用域)关系一无所知,但是有几种选择:
如果scope of firstCtrl
是作用域的父级,则secondCtrl
你的代码应通过替换$emit
为$broadcastin
来工作firstCtrl
:
function firstCtrl($scope)
{
$scope.$broadcast('someEvent', [1,2,3]);
}
function secondCtrl($scope)
{
$scope.$on('someEvent', function(event, mass) { console.log(mass); });
}
如果你的范围之间没有父子关系,则可以注入$rootScope
控制器并将事件广播到所有子范围(即secondCtrl
)。
function firstCtrl($rootScope)
{
$rootScope.$broadcast('someEvent', [1,2,3]);
}
- 最后,当你需要将事件从子控制器分派到向上作用域时,可以使用
$scope.$emit
。如果的范围firstCtrl
是范围的父级secondCtrl
:
function firstCtrl($scope)
{
$scope.$on('someEvent', function(event, data) { console.log(data); });
}
function secondCtrl($scope)
{
$scope.$emit('someEvent', [1,2,3]);
}
解决方法
如何$scope
使用.$emit
和.$on
方法将对象从一个控制器发送到另一个控制器?
function firstCtrl($scope) {
$scope.$emit('someEvent',[1,2,3]);
}
function secondCtrl($scope) {
$scope.$on('someEvent',function(mass) { console.log(mass); });
}
它不按我认为的方式工作。如何做$emit
和$on
工作?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。