"Ghost"ng点击功能
"Ghost" ng-click function
就在我认为我非常了解Angular的时候,我遇到了这样的情况:
有人能解释一下这是怎么可能的吗?
演示:http://jsfiddle.net/u08jgd4g/1/
HTML
<div ng-controller="MyCtrl">
<button ng-click="WTF" ng-bind="labelText()"></button>
<div ng-show="showMe()">
Hello, World!
</div>
</div>
JS
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
var show = true;
$scope.labelText = function() {
return !show ? 'Hide' : 'Show';
};
$scope.showMe = function() {
show = !show;
return show;
};
};
如果您还没有发现这个问题:按钮有一个不存在的ng-click
函数,但当您单击按钮时,div会切换,按钮值也会更改。
这不是因为函数不存在,而是因为点击触发了$digest
循环。因此,循环运行并评估ngShow
和ngBind
函数。
这两个函数只是将一个变量翻转到原来的相反方向,然后应用结果。因此,所发生的一切都是触发一个摘要循环,并触发绑定在视图中的函数。
之所以会发生这种情况,是因为您使用了ng-click
函数,该函数在对ng-click
指令上给定的表达式求值后运行摘要循环。结果是,所有watcher
函数都会得到评估,这就是为什么每次单击时都会切换您的值。
在场景后面,当对表达式使用ng-show
指令时,angular会在内部将该表达式放入$scope
对象下的watcher
数组中。您可以在$scope.$$watchers
对象中看到watcher
的对象的集合。
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 铬:“;未捕获的语法错误:意外的标记:"
- 如何防止网页加载后自动启动功能
- 提供“;onClick"适用于iPad(触摸屏)和桌面用户的默认功能
- 如何分解jQuery"toggle”;函数转换为separate“;显示“;以及“;隐藏“;功能
- JavaScript美学:;函数foo(){}"vs“;var foo=函数(){}"AMD功能
- JQuery动画完整功能:如何恢复我的"老这个”;
- "键未定义”;在AngularJS'的自定义筛选功能
- "Ghost"ng点击功能
- "未捕获的类型错误:无法读取属性'名称'未定义的“;当触发一个功能时
- "未定义不是函数“;在.to Be功能
- 如何用更多的"期望“;功能
- 如何获取javascript"链接旋转器”;从身体到部门的功能
- 按钮“”的onclick功能;搜索书籍"是't工作是因为我没有;没有收到任何警报..没有调用函数Sen
- jQuery"isHTML5Error”-类似功能
- jquery“.when"美元;功能没有按预期工作
- 使onclick功能与ENTER一起工作;Go"Safari Mobile(iOS)上的按钮
- 如何做facebook API登录使用锚标签链接使用Javascript功能?给定在<a href="&q