Javascript ng显示,带有自己的ng控制器,在负载和多次报警

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?这可以解释你所经历的

为什么在页面加载时调用我的警报并调用两次?这是正常的行为吗

我还点击了另一个分区/控制器中的一些图像,它正在调用警报?????添加到下面

我有一个html标记,如下所示

 <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);
     };
 });