好的,这是一个我以前从未遇到的奇怪问题,我没有看到其他人在互联网上遇到这个问题;
对于初学者,我使用AngularJS
和$scope
变量。
在使用AngularJS时,我注意到我的变量显示了在控制器开头设置的值,例如:
$scope.editMode = true;
我在控制器内部的函数中为它们设置的值,在这种情况下,函数是通过单击触发的。例如:
$scope.disableEditMode = function() {$scope.editMode = false;}
我在控制器中运行一秒钟的间隔来检查变量的值,这表明它是真的然后是假的,依此类推......
为什么它会自行改变?或者为什么它具有这两个值? 这是怎么回事?
顺便说一句,我不确定这是否是导致此问题的原因,但是在更改变量值的click事件中,我还将用户重定向到使用相同控制器的另一个页面,我认为可能会重置该变量的数据,但显然不是这样。
感谢。
答案 0 :(得分:1)
正常的javascript setInterval()
不是Angular范围的一部分。
Angular有自己的实现$interval
,它将正确评估范围。
var timer = $interval(function() {
console.log($scope.editMode);
}, 1000);
您必须将其包含在控制器中:
...controller('myController', function($scope, $interval)..
另外,检查/更正的另一件事是范围变量,如果它在某个子控制器中以某种方式用作ng-model
。
更多信息: