$ scope var有多个相互矛盾的值?

时间:2016-11-14 12:52:57

标签: javascript angularjs

好的,这是一个我以前从未遇到的奇怪问题,我没有看到其他人在互联网上遇到这个问题;

对于初学者,我使用AngularJS$scope变量。

在使用AngularJS时,我注意到我的变量显示了在控制器开头设置的值,例如:

$scope.editMode = true;

我在控制器内部的函数中为它们设置的值,在这种情况下,函数是通过单击触发的。例如:

$scope.disableEditMode = function() {$scope.editMode = false;}

我在控制器中运行一秒钟的间隔来检查变量的值,这表明它是真的然后是假的,依此类推......

  

为什么它会自行改变?或者为什么它具有这两个值?   这是怎么回事?

顺便说一句,我不确定这是否是导致此问题的原因,但是在更改变量值的click事件中,我还将用户重定向到使用相同控制器的另一个页面,我认为可能会重置该变量的数据,但显然不是这样。

感谢。

1 个答案:

答案 0 :(得分:1)

正常的javascript setInterval()不是Angular范围的一部分。

Angular有自己的实现$interval,它将正确评估范围。

var timer = $interval(function() {
                console.log($scope.editMode);
            }, 1000);

您必须将其包含在控制器中:

...controller('myController', function($scope, $interval)..

另外,检查/更正的另一件事是范围变量,如果它在某个子控制器中以某种方式用作ng-model。 更多信息: