gpt4 book ai didi

javascript - 如果我们从 html 页面调用 Angular 函数那么它将如何工作?

转载 作者:行者123 更新时间:2023-12-03 03:53:19 30 4
gpt4 key购买 nike

在下面的代码中,$scope.contactList 包含一个联系人列表,每个联系人都有一个 isActive 标志。

如果我们从 Controller 调用$scope.getInactiveCount,那么它将给出非事件联系人的计数。

如果我们从 HTML 调用该函数会怎样? DOM加载时执行一次还是每次都执行?

每当将新联系人添加到列表中时,$scope.getInactiveCount 函数将如何触发?

我想知道从 HTML 页面调用 Angular 函数时的流程。

app.js

angular.module('demo',[]).controller('demoController',function($scope){

$scope.contactList=[{firstName:'John',lastName:'Moody',isActive:'Y'},
{firstName:'Chris',lastName:'George',isActive:'Y'},
{firstName:'Anabella',lastName:'Maze',isActive:'N'},
{firstName:'Joseph',lastName:'Butler',isActive:'Y'},
{firstName:'Roni',lastName:'Ray',isActive:'N'},
{firstName:'Tim',lastName:'Cook',isActive:'Y'},
{firstName:'Angel',lastName:'Christina',isActive:'N'}];

$scope.getInactiveCount=function(){
var count=0;
$scope.contactList.forEach(function(d){
if(d.isActive=='N')
count++;
})
return count;
};

$scope.addContact=function(firstName,lastName){
var contact={firstName:firstName,lastName:lastName,isActive:'N'};
$scope.contactList.push(contact);
}
});

index.html

<!DOCTYPE html>
<html>
<head>
<title>Calling Angular function from HTML</title>
<script src="angular.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<div data-ng-app='demo'>
<div data-ng-controller='demoController'>
Inactive contacts count: {{getInactiveCount()}}
<br/>
<div>
<input type=text ng-model="firstname">
<input type=text ng-model="lastname">
<br>
<input type='button' value='Add contact' ng-click='addContact(firstname,lastname)' >
</div>
</div>
</div>
</body>
</html>

最佳答案

AngularJS 有一个双向数据绑定(bind)系统,这意味着每当模型(数据)发生变化时,Angular 就会重新计算 View 。

在您的示例中,页面正在加载。 Angular 脚本启动后,就会加载模型 ($scope.contactList)。

一旦完成,$compile 进程就会启动。此编译过程编译 DOM 并查找 Angular 事件和数据绑定(bind)。在您的示例中,它将找到 getInactiveCount() 双向数据绑定(bind)和 ng-click="addContact(...)" 并将它们添加到 Angular观察者。现在,摘要循环将开始将观察者更改为变量。

在每个摘要周期期间,都会检查双向数据绑定(bind)的更改,并且将运行函数以查看结果是否发生更改。这意味着每个摘要周期都会调用 getInactiveCount() 函数。

只要 Angular 上的变量发生变化,例如当您单击“添加联系人”按钮时,就会调用摘要循环。 addContact() 函数将被调用,$scope.contactList() 发生变化并调用摘要循环。现在,getInactiveCount() 数据绑定(bind)将调用该函数,并且显示的值将被更新。

您可以阅读有关引导过程的更多信息:AngularJS Developer Guide - Bootstrap .

关于javascript - 如果我们从 html 页面调用 Angular 函数那么它将如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45079712/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com