理解特定的$scope.$apply(fn)实现
Understanding specific $scope.$apply(fn) implementation
下面的函数用作用域包装了什么。申请美元做什么?我似乎找不到这个问题的答案,但我看到它在指令中使用的例子。
scope.$apply(function() {
fn(scope, {
$event: evt
})
});
我能找到的最接近的解释是,当你想要响应的事件没有被Angular指令处理时,可能会使用它。这就是我所指的解释。
如果有人能提供此模式的预期用途及其含义,将不胜感激。
编辑1
我应该早点看到的。肯定需要更多的睡眠。因为我的例子不是一个完整的工作。仔细看了参考的解释后,就更有意义了。fn(scope, {$event: evt})
调用通过以下行中解析的指令调用对自定义函数的解析引用:
var fn = $parse(tAttrs.myContextmenu);
所以目标函数实现是通过指令捕获一个特定的事件,然后抑制它。
所以我想这是有用的,当你不想混乱的指令与控制器特定的功能,也许触发一个不同的事件响应另一个事件,然后让控制器处理它。
scope.$apply
用于手动触发Angular的摘要周期,以处理发生在Angular执行上下文之外的任何异步事件。
一个这样的异步事件是element.on("click", function(e){...})
(或与.on
捕获的任何其他相关事件),但也可以是Angular上下文之外的其他异步函数。
第二部分是对"$parsed"表达式的调用。它接受一个范围作为参数和一个"局部"变量的映射,比如{$event: evt}
。其意图与scope: "&"
所做的非常相似,但没有创建孤立的作用域。例如,如果表达式是:
<my-directive p="doSomething(foo)">
那么,如果doSomething(foo)
被$解析,调用者可以提供foo
的值:
var parsedFn = $parse(attrs.p);
parsedFn(scope, {foo: 5})'
这将导致调用doSomething(5)
回复这个问题,因为它对我来说是有意义的(参见我的编辑)。
fn(scope, {$event: evt})
调用通过以下行中解析的指令调用对自定义函数的解析引用:
var fn = $parse(tAttrs.myContextmenu);
所以目标函数实现是通过指令捕获一个特定的事件,然后抑制它。
所以我想这是有用的,当你不想混乱的指令与控制器特定的功能,也许触发一个不同的事件响应另一个事件,然后让控制器处理它。
- 如何使用动画实现纸张推车
- 客户端服务器REST API captcha实现
- 如何实现此布局
- Meteor忘记了密码的实现
- 使用Native Sockets在Android中实现WebSockets
- 在样板文件中实现Ajax
- instanceof是如何在JavaScript中实现的
- 如何正确实现Jquery多选小部件
- 实现一个建立在google.com之上的自定义搜索引擎
- 多个组件是如何实现的
- window.location使用jquery mobile实现chrome跳转
- 如何在OpenERP中实现网络摄像头
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- javascript加密实现,包括可信否认
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- angular.js:13424错误:[ng:areq]参数'fn'不是函数,getObject
- 如何让程序员在javascript中实现正确的回调
- 如何使用自定义辅助对象(handler)实现嵌套的每个循环
- 如何将 fn 去抖动实现到 jQuery keyup 事件中
- 理解特定的$scope.$apply(fn)实现