如何使用.$emit
和.$on
方法将$scope
对象从一个控制器发送到另一个控制器?
function firstCtrl($scope) {
$scope.$emit('someEvent', [1,2,3]);
}
function secondCtrl($scope) {
$scope.$on('someEvent', function(mass) { console.log(mass); });
}
它的工作方式并不像我想的那样。$emit
和$on
如何工作?
另外,我将建议第四个选项,作为@zbynour提出的选项的更好的替代方案。
使用$rootscope.$emit
而不是$rootscope.$broadcast
,而不考虑传输控制器和接收控制器之间的关系。这样,事件就会保留在$rootscope.$$listeners
的集合中,而使用$rootscope.$broadcast
时,事件会传播到所有子作用域,其中大多数可能都不是该事件的侦听器。当然,在接收控制器端,您只需使用$rootscope.$on
。
对于此选项,您必须记住销毁控制器的rootScope侦听器:
var unbindEventHandler = $rootScope.$on('myEvent', myHandler);
$scope.$on('$destroy', function () {
unbindEventHandler();
});
首先,父子范围关系确实重要。您有两种可能发出某些事件:
$broadcast
--将事件向下分配到所有子作用域,$emit
--通过作用域层次结构向上分派事件。我对您的控制器(作用域)关系一无所知,但有几个选项:
>
如果FirstCtrl
的作用域是SecondCtrl
作用域的父级,则您的代码应通过将$emit
替换为FirstCtrl
中的$broadcast
来工作:
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 of 是作用域的父级,则你的代码应通过替换为来工作: 如果你的范围之间没有父子关系,
问题内容: 现在,之间的性能差异和已被淘汰,没有任何理由,更喜欢到? 他们是不同的,是的。 仅限于范围层次结构(向上)-如果它适合您的设计,这可能很好,但是在我看来,这是一个相当随意的限制。 在所有 选择 收听此活动的人中都有效,这在我看来是一个更为明智的限制。 我想念什么吗? 编辑: 为了对回答做出澄清,调度的方向不是我要解决的问题。向上调度事件,-向下调度事件。但是,为什么不总是使用它来覆盖所
问题内容: 我不知道如何使用和。官方文档没有帮助。 我不明白的是: 他们连接到DOM吗? 如何更新对模型的DOM更改? 它们之间的连接点是什么? 我尝试了本教程,但这需要对它的理解并且理所当然。 做什么和做什么,以及如何正确使用它们? 问题答案: 您需要了解AngularJS的工作原理才能理解它。 消化周期和作用域 首先,AngularJS定义了所谓的 摘要循环 的概念。这个周期可以看作是一个循环
本文向大家介绍vue template中slot-scope/scope的使用方法,包括了vue template中slot-scope/scope的使用方法的使用技巧和注意事项,需要的朋友参考一下 在vue 2.5.0+ 中slot-scope替代了 scope template 的使用情形为,我们已经封装好一个组建,预留了插槽,使用 的插槽 首先 我们的创建一个组建 组建很简单有一个 slot
描述 (Description) 变量范围指定可用变量的位置。 将从本地范围搜索变量,如果它们不可用,则编译器将从父范围进行搜索。 例子 (Example) 以下示例演示了在LESS文件中使用命名空间和访问器 - <html> <head> <title>Less Scope</title> <link rel = "stylesheet" type = "text/
Target Scope The target scope configuration lets you tell Burp, at a suite-wide level, exactly what hosts and URLs constitute the target for your current work. You can think of the target scope as, ro