Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs自动刷新不会在取消时停止_Angularjs - Fatal编程技术网

Angularjs自动刷新不会在取消时停止

Angularjs自动刷新不会在取消时停止,angularjs,Angularjs,我正在刷新一个使用$interval检查数据的方法。我正在使用拨动开关打开/关闭。默认情况下,它以ON开始并刷新。如果我将其关闭,它将进入关闭状态,5秒钟后再次进入打开状态并继续刷新。为什么我的cancel()没有被调用 HTML 看起来您在打算使用时使用了。在JavaScript中,有三个类似的运算符很容易混淆:=、=和== 以下是MDN对赋值运算符的说明=: 为变量赋值的简单赋值运算符。赋值操作的计算结果为指定的值 因此,if(x=false)形式的语句执行以下操作: 首先,x=false将

我正在刷新一个使用
$interval
检查数据的方法。我正在使用拨动开关打开/关闭。默认情况下,它以ON开始并刷新。如果我将其关闭,它将进入关闭状态,5秒钟后再次进入打开状态并继续刷新。为什么我的
cancel()
没有被调用

HTML

看起来您在打算使用时使用了。在JavaScript中,有三个类似的运算符很容易混淆:
=
=
==

以下是MDN对赋值运算符的说明
=

为变量赋值的简单赋值运算符。赋值操作的计算结果为指定的值

因此,
if(x=false)
形式的语句执行以下操作:

  • 首先,
    x=false
    将值
    false
    分配给变量
    x
    。现在
    x
    保存值
    false
  • 赋值的结果是赋值:
    false
    。它作为
    if(false)
    传递到
    if
    语句中。因此,
    if
    语句没有通过
  • 下面是一个示例,显示赋值运算符的作用:

    varx;
    如果(x=真){
    log('x=true已通过!x现在是'+x');
    }
    如果(x=‘香蕉’){
    log('x=通过!x现在是'+x');
    }
    如果(x=false){
    //你永远也到不了这里!
    }
    否则{
    log('x=false失败!x现在是'+x');
    
    }
    clearInterval(myInterval);我试着在false条件中给出它,但仍然是相同的
    $scope.status=false
    应该是
    $scope.status===false
    或者干脆是
    $范围.状态
    。对
    $scope.status=true
    也进行类似的更改。更改后它停止加载,但如果我打开开关,刷新将不会启动。@Alex K请发布一个答案。我会接受的。我只是因为你的评论才解决了这个问题。
    <div>
        <i class="fa fa-toggle-on active" ng-if="status == true" ng-click="changeStatus();"> </i>
        <i class="fa fa-toggle-on fa-rotate-180 inactive" ng-if="status ==false" ng-click="changeStatus();"> </i>
    </div>
    
    App.controller('Ctrl', [ '$scope', 'Details', '$interval', function($scope, Details, $interval  ) {
    
        $scope.availableDetailsTemp = [];
        $scope.availableDetails = [];
    
        init();  
    
        function init() {
            $scope.status = true;
            $scope.availableDetails = [];
            $scope.availableDetailsTemp = 
            Details.resource2.query(function(response) {
                angular.forEach(response, function(item) {
                    if (item) {
                        $scope.availableDetails.push(item);
                    }
                });
            });
         }
         var myInterval = null;
    
         if ($scope.status = true) {
            myInterval = $interval(init, 5000);
         }          
    
         $scope.changeStatus = function(){
             $scope.status = !$scope.status;
             if ($scope.status = false) {
                 $interval.cancel(myInterval);
             }  
         };
    }]);