gpt4 book ai didi

javascript - 是什么导致 AngularJS 变量更改触发 html 更新?

转载 作者:行者123 更新时间:2023-12-03 09:22:01 25 4
gpt4 key购买 nike

我从 W3Schools AngularJS 教程中获得了这个示例。我做了一个小更改,从绑定(bind)复选框范围的值到使用表达式。我认为待办事项列表不会再更新了。但它仍然如此。是什么导致 ng-repeat 仅仅因为我添加了待办事项而触发?

http://plnkr.co/edit/Kojz2ODWDS8dFDNzjYR5?p=preview

<!DOCTYPE html>
<html>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>

<body ng-app="myApp" ng-controller="todoCtrl">

<h2>My Todo List</h2>

<form ng-submit="todoAdd()">
<input type="text" ng-model="todoInput" size="50" placeholder="Add New">
<input type="submit" value="Add New">
</form>

<br>

<div ng-repeat="x in todoList">
<input type="checkbox" ng-model="x.done"> <span>{{x.todoText}}</span>
</div>

<p><button ng-click="remove()">Remove marked</button></p>

<script>
var app = angular.module('myApp', []);
app.controller('todoCtrl', function($scope) {
$scope.todoList = [{todoText:'Clean House', done:false}];

$scope.todoAdd = function() {

$scope.todoList.push({todoText:$scope.todoInput, done:false});
$scope.todoInput = "";
};

$scope.remove = function() {
var oldList = $scope.todoList;
$scope.todoList = [];
angular.forEach(oldList, function(x) {
if (!x.done) $scope.todoList.push(x);
});
};
});
</script>

</body>
</html>

最佳答案

单击 Add New按钮提交相应的表单并通过使用ng-submit="todoAdd()"它会调用这个函数。这反过来又向todoList添加了一个条目。在你的范围内。由于此数组已被修改,因此会触发 Angular 摘要循环并更新列表。

对你的问题的一些建议:首先,你指的是W3Schools,而不是W3C(这是一个标准化组织,通常不做教程,这就是我好奇的原因 - 另外,你会发现很多不这样做的原因)在搜索或查看元数据时使用 W3Schools)。另外,如果您与其他代码进行比较,您应该包含它或至少链接到它。

我通过谷歌搜索找到了它,看来你唯一的改变是使用 <span>{{x.todoText}}</span>而不是<span ng-bind="x.todoText"></span> 。这里的消化周期确实没有区别。唯一的区别是使用 {{}}在实际替换变量之前,它可能首先在浏览器窗口中呈现为大括号。因此,通常最好使用 ng-bind .

关于javascript - 是什么导致 AngularJS 变量更改触发 html 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814736/

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