Javascript ng显示,带有自己的ng控制器,在负载和多次报警
为什么在页面加载时调用我的警报并调用两次?这是正常的行为吗 我还点击了另一个分区/控制器中的一些图像,它正在调用警报?????添加到下面 我有一个html标记,如下所示Javascript ng显示,带有自己的ng控制器,在负载和多次报警,javascript,html,angularjs,Javascript,Html,Angularjs,为什么在页面加载时调用我的警报并调用两次?这是正常的行为吗 我还点击了另一个分区/控制器中的一些图像,它正在调用警报?????添加到下面 我有一个html标记,如下所示 <div class="item-blue" ng-controller="ItemController as item"> <div class="col" ng-show="item.checkItem('foo')"> 奇怪 页面上是否多次出现ItemController?这可以解释你所经历的
<div class="item-blue" ng-controller="ItemController as item">
<div class="col" ng-show="item.checkItem('foo')">
奇怪
页面上是否多次出现
ItemController
?这可以解释你所经历的行为。ItemController
是否多次出现在页面上?这可以解释您正在经历的行为。这是angular js中的正常行为,因为无论您采取何种方法,angular都会不断发生,因为ng show会尝试检查该条件(在本例中,该方法调用“checkItem()”,并弹出一个警报框)因此,我认为这不是任何代码故障的结果。这是angular js中的正常行为,因为无论您采取何种方法,angular都会不断发生,因为ng show会尝试检查条件(在本例中,它会调用“checkItem()”方法,并弹出一个警报框)所以我不认为这是任何代码故障的结果。这是因为AngularJS在用于ng show
的表达式上设置了一个“watch”。然后,它定期重新计算该表达式(在称为摘要循环的过程中),以查看值是否已更改。由于表达式涉及调用函数,因此每次计算表达式时都会调用该函数
这个消化周期非常频繁地发生,你不能总是控制它发生的时间。因此,只有在表达式中调用函数,这些函数用于ng if
,ng show
,ng class
,等等,如果它们只返回一个值(与显示警报、更改状态等相反)
以下是触发摘要的一些情况(还有很多):
- HTTP请求返回
- 您可以显式调用
或$scope.$apply()
$scope.$digest()
- 使用
或$timeout
$interval
- 单击鼠标、键入键或移动鼠标(如果使用了侦听这些事件的指令)
正如您所希望看到的,这有很多原因,因此您不想在其中做比所需更多的工作,并且它计算的所有表达式都应该只返回值。这是因为AngularJS在用于
ng show
的表达式上设置了一个“手表”。然后,它定期重新计算该表达式(在称为摘要循环的过程中),以查看值是否已更改。由于表达式涉及调用函数,因此每次计算表达式时都会调用该函数
这个消化周期非常频繁地发生,你不能总是控制它发生的时间。因此,只有在表达式中调用函数,这些函数用于ng if
,ng show
,ng class
,等等,如果它们只返回一个值(与显示警报、更改状态等相反)
以下是触发摘要的一些情况(还有很多):
- HTTP请求返回
- 您可以显式调用
或$scope.$apply()
$scope.$digest()
- 使用
或$timeout
$interval
- 单击鼠标、键入键或移动鼠标(如果使用了侦听这些事件的指令)
正如您所希望看到的,这有很多原因,因此您不想在其中做比所需更多的工作,并且它计算的所有表达式都应该只返回值。no。在这里的另一个帖子上看到了,并仔细检查了一下。我只是想弄清楚这是否是Angular中的正常行为。如果在第一个div中使用
ng controller=“ItemController”
和ng show=“checkItem('foo')”
,会发生什么checkItem
是绑定到$scope
的函数,是吗?否。在这里的另一个帖子上看到了,并仔细检查了一下。我只是想弄清楚这是否是Angular中的正常行为。如果在第一个div中使用ng controller=“ItemController”
和ng show=“checkItem('foo')”
,会发生什么checkItem
是绑定到$scope
的函数,是吗?感谢您删除知识Greg。我使用它返回一个值,然后隐藏/显示(true或false)。那是可以接受的用法吗?绝对可以。除了在表达式中读取值和返回值之外,您唯一应该执行的操作是基于事件的操作,如ng click
,ng keypress
,等等。它们仅在事件发生时运行。大多数其他东西都会持续运行,所以应该尽可能的纯净(没有副作用)。谢谢你放弃知识Greg。我使用它返回一个值,然后隐藏/显示(true或false)。那是可以接受的用法吗?绝对可以。除了在表达式中读取值和返回值之外,您唯一应该执行的操作是基于事件的操作,如ng click
,ng keypress
,等等。它们仅在事件发生时运行。大多数其他的东西会持续运行,所以应该尽可能的纯净(没有副作用)。
app.controller('ItemController', function() {
this.checkItem = function(bar) {
alert(bar);
};
});