gpt4 book ai didi

javascript - 为什么 AngularJS 在使用 setInterval() 方法时无法监听文本输入?

转载 作者:行者123 更新时间:2023-11-28 00:11:39 26 4
gpt4 key购买 nike

这是我的代码

   <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js">
</script>
<body ng-app="" style="background:{{val}};" id="body">
<input type="text" ng-model="val" id="color-input">
<input type="button" onclick="render()" value="Render">
</body>
<script>
function render(){
setInterval(function(){myTimer()},5000);
}
var i=0;
function myTimer() {
if(i<4){
colors=["red","green","blue","grey"];
document.getElementById("color-input").value=colors[i];
i++;
}
else
i=0;
}
</script>

我使用的是 5 秒的计时器。但是当我按下渲染按钮时,主体的背景颜色保持不变。

最佳答案

您需要使用 Angular 模块化方法的第一件事是创建 angular.module添加 Controller 、指令、过滤器等组件。然后在 ng-app 中提供该模块指示。此外,您不应该使用选择器来获取输入字段的值,因为您已经附加了 ng-model到该字段,这将使您可以在 Controller 范围内使用该值。

您不应该使用 native JavaScript,它在 Angular 上下文中不起作用,您需要替换 onclickng-click & setInterval$interval这一切都将位于 Angular Controller 内。通过使用来自外部 Angular 上下文的 native 方法,更新 Angular 的绑定(bind)会出现问题,因为它们不会运行摘要循环。在这种情况下,您需要手动运行消化周期,这在 Angular 中执行代码时被认为是非常糟糕的编码。

标记

<body ng-app="app" style="background:{{val}};" id="body" ng-controller="mainCtrl">
<input type="text" ng-model="val" id="color-input">
<input type="button" ng-click="render()" value="Render">
</body>

Controller

angular.module('app', [])
.controller('mainCtrl', function($scope, $interval) {
//code here
$scope.render = function() {
$interval(function() {
myTimer()
}, 5000);
}

var i = 0;

function myTimer() {
if (i < 4) {
colors = ["red", "green", "blue", "grey"];
$scope.val = colors[i];
i++;
} else
i = 0;
}
});

关于javascript - 为什么 AngularJS 在使用 setInterval() 方法时无法监听文本输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30822469/

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