Noa*_*tas 30 angularjs angularjs-scope
是否有内置的方法来阻止$broadcast事件沿着范围链走下去?
事件传递的事件对象$broadcast没有stopPropagation方法(就像$ rootScope提到的文档一样.)但是这个合并的pull请求表明$broadcast事件可以stopPropagation调用它们.
kos*_*tik 43
来自angularJS 1.1.2的片段源代码:
$emit: function(name, args) {
// ....
event = {
name: name,
targetScope: scope,
stopPropagation: function() {
stopPropagation = true;
},
preventDefault: function() {
event.defaultPrevented = true;
},
defaultPrevented: false
},
// ....
}
$broadcast: function(name, args) {
// ...
event = {
name: name,
targetScope: target,
preventDefault: function() {
event.defaultPrevented = true;
},
defaultPrevented: false
},
// ...
}
Run Code Online (Sandbox Code Playgroud)
正如你可以看到$ broadcast中的事件对象没有"stopPropagation".
您可以使用preventDefault而不是stopPropagation将事件标记为"不需要处理此事件".这不会停止事件传播,但这会告诉孩子范围:"不需要处理此事件"
示例:http://jsfiddle.net/C8EqT/1/
| 归档时间: |
|
| 查看次数: |
21640 次 |
| 最近记录: |