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

$scope var has multiple values that contradict each other?

本文关键字:相互矛盾 scope var      更新时间:2023-09-26

好吧,这是一个奇怪的问题,我从来没有遇到过,我也没有看到其他人在互联网上有这个问题;

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

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

$scope.editMode = true;

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

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

我在控制器中运行一秒的间隔来检查变量的值,它向我显示它是真,然后是假,等等…

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

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

谢谢。

正常的javascript setInterval()不是Angular作用域的一部分。

Angular有自己的实现$interval,它会正确地评估作用域。

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

你必须在控制器中包含这个:

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

此外,另一件要检查/纠正的事情是范围变量,如果它以某种方式在子控制器中并用作ng-model。更多链接:

    为什么AngularJS文档不在model指令中使用点呢?如果你在AngularJS模型中没有使用。(点),你做错了吗?