使用$scope
它很容易发出事件或注意事件。
(function() {
"use strict";
angular
.module("app")
.controller("Ctrl", [
"$scope",
CtrlDefinition
]);
function CtrlDefinition($scope) {
$scope.$on("change", listenForChange);
function listenForChange(data) {
//do something
}
}
})();
但是,如果我尝试使用var vm = this
语法,我警告说$on
,$emit
和$broadcast
不是的方法this
。如何访问它们?我还需要注入$scope
控制器定义吗?
(function() {
"use strict";
angular
.module("app")
.controller("Ctrl", CtrlDefinition);
function CtrlDefinition() {
var vm = this;
vm.$on("change", listenForChange); //$on is not a method of vm
}
})();
您可以做这样的事情,但是它不会破坏根本不用的目的$scope
吗?
(function() {
"use strict";
angular
.module("app")
.controller("Ctrl", [
"$scope",
CtrlDefinition
]);
function CtrlDefinition($scope) {
var vm = this;
vm.scope = $scope;
vm.scope.$on("change", listenForChange);
}
})();
如何使用控制器作为语法访问观察者?
为了使用存在的任何东西$scope
,您不得不注入$scope
。不幸的是,它很简单,这是“ as”语法的缺点。
不过,好消息是,$scope
与之一起注入this
不会改变控制器作为语法的功能,它只是使您能够访问存在于上的所有事件管理 $scope
。
值得注意的是,这是Angular 2.0中出现问题的主要原因之一…之间存在一个真正的问题和差异,$scope
而用来解决视图范围问题的“
Controller as”语法也是如此。
问题内容: 我了解,并且 用于在一个控制器中引发事件并在另一个控制器中进行处理。如果可能的话,有人可以直接给我一些有关上述三种用法的实时示例吗? 我通过以下链接了解了基本用法。 http://www.binaryintellect.net/articles/5d8be0b6-e294-457e-82b0-ba7cc10cae0e.aspx 问题答案: $ emit 它通过作用域层次结构向上调度事件
问题内容: 现在,之间的性能差异和已被淘汰,没有任何理由,更喜欢到? 他们是不同的,是的。 仅限于范围层次结构(向上)-如果它适合您的设计,这可能很好,但是在我看来,这是一个相当随意的限制。 在所有 选择 收听此活动的人中都有效,这在我看来是一个更为明智的限制。 我想念什么吗? 编辑: 为了对回答做出澄清,调度的方向不是我要解决的问题。向上调度事件,-向下调度事件。但是,为什么不总是使用它来覆盖所
@notblank、@min和@valid注释来自以下依赖项: 如何使@Validated控制器中的@Validated工作在Person请求体上?
如何使用和方法将对象从一个控制器发送到另一个控制器? 它的工作方式并不像我想的那样。和如何工作?
问题内容: 使用定义控制器的原始方法 ,访问父级的作用域非常简单,因为子级作用域原型继承自其父级。 Controller-As方法 似乎是声明控制器的推荐方法。但是,对于Controller-A,上述方法不再有效。 当然,我可以通过View 访问父作用域: 我确实有一些问题(意大利面条代码可能存在),但是这个问题是关于从子控制器访问父作用域的。 我看到此工作的唯一方法是: 因此,现在,子控制器需要
本文向大家介绍Angularjs中的事件广播 —全面解析$broadcast,$emit,$on,包括了Angularjs中的事件广播 —全面解析$broadcast,$emit,$on的使用技巧和注意事项,需要的朋友参考一下 Angularjs中不同作用域之间可以通过组合使用$broadcast,$emit,$on的事件广播机制来进行通信 介绍: $broadcast的作用是将事件从父级作用域传