为什么我的就绪函数总是在控制器或指令重新启动时运行

时间:2017-05-18 10:15:14

标签: javascript angularjs angular-directive angular-controller

当我的控制器或指令重新强化angular.element(document).ready(function(){...});函数时总是运行。为什么呢?

我有两个控制器和一个指令。我从父控制器更改值,该控制器分配给ng-repeat。每当我更改此变量时,控制器也会重新定位并准备好功能调用。

请参阅此链接:angualr ready function

1 个答案:

答案 0 :(得分:0)

您的代码设置为当您单击"更改索引时,您正在销毁和重新创建内容。按钮:

that.changeIndex = function(){
    that.arr = [{name : g++}];
    that.isValid = !that.isValid;
}

ng-repeat在您创建新的myCon2数组时销毁并重新创建arr个控制器:

<div ng-repeat="m in con.arr track by m.name" ng-controller="myCon2 as con1">

当您更改ng-if时,my-dir会销毁或重新创建您的isValid指令:

<div my-dir ng-if="con.isValid">hey directive!!!!</div>

控制器和指令都将一个处理程序附加到文档就绪,只要文档准备就绪就会运行(不仅仅是文档准备就绪)。这是有道理的,因为如果您的代码在文档最初准备就绪后加载,您通常仍希望它能够运行。

顺便说一下,您不应该在Angular控制器和指令中使用文档就绪。您可以将初始化代码放在它们的顶部,也可以使用ng-init