为啥我的就绪函数总是在控制器或指令重新初始化时运行

Posted

技术标签:

【中文标题】为啥我的就绪函数总是在控制器或指令重新初始化时运行【英文标题】:Why does my ready function always run when controller or directive reinisilize为什么我的就绪函数总是在控制器或指令重新初始化时运行 【发布时间】:2017-10-18 02:29:10 【问题描述】:

当我的控制器或指令 reinisilize angular.element(document).ready(function()...); 函数始终运行时。为什么?

我有两个控制器和一个指令。我从分配给ng-repeat 的父控制器更改值。每当我更改此变量时,控制器也会重新设置并准备调用函数。

查看此链接:angualr ready function

【问题讨论】:

【参考方案1】:

您的代码设置为当您单击“更改索引”按钮时,您正在销毁和重新创建事物:

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

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

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

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

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

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

顺便说一句,您不需要在 Angular 控制器和指令中使用准备好的文档。您可以将初始化代码放在它们的顶部,也可以使用ng-init

【讨论】:

以上是关于为啥我的就绪函数总是在控制器或指令重新初始化时运行的主要内容,如果未能解决你的问题,请参考以下文章

为啥在单步执行 ASP.NET MVC 控制器时,我的 VS2008 调试会话总是退出?

为啥函数返回的值总是 null 或 undefined?

μC/OS II的任务管理

μC/OS II的任务管理

为啥纯虚函数初始化为0?

为啥我在输入dos指令后总显示" 不是内部或外部命令,也不是可运行的程序或批处理文件”?