Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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
Javascript setInterval函数不会更改视图中的$scope_Javascript_Angularjs - Fatal编程技术网

Javascript setInterval函数不会更改视图中的$scope

Javascript setInterval函数不会更改视图中的$scope,javascript,angularjs,Javascript,Angularjs,我有一个客户端带有angular js和html的spring应用程序,我想每隔6秒更新视图中的信息,因为我调用了setInterval函数,但它不会更改视图 这是我的密码 $scope.aat=function(){ $http.get("http://localhost:8080/projet/getInspectionEnCoursDinspection") .success(function (data) { $scope.tab1=d

我有一个客户端带有angular js和html的spring应用程序,我想每隔6秒更新视图中的信息,因为我调用了setInterval函数,但它不会更改视图 这是我的密码

$scope.aat=function(){
                $http.get("http://localhost:8080/projet/getInspectionEnCoursDinspection")
    .success(function (data) {

     $scope.tab1=data;
     console.log("size="+ $scope.inspectionEnCoursDinspection1.length);

   })   
} ,

setInterval(function(){ $scope.aat() },60000);
这是我的html视图

<table class="table table-bordered">
<tr ng-repeat="insp in tab1">
<td>Mat{{insp.vehicule.matricule}}

<div ng-repeat="aa in insp.tests">
Test<ul><li ng-repeat="defaut in aa.defauts">{{defaut.nomDefaut}}</li></ul>
</div>

</td>

<td><button ng-click="annulerTest()"
                                    class="btn btn-default btnt">
                                    <i class="glyphicon glyphicon-remove"></i>
                                </button></td>
</tr>
</table>

材料{{检查车辆矩阵}
测试
  • {{defaut.nomdfaut}
非常感谢您提供的任何帮助

相关:

这是因为您正在使用setInterval用$scope.aat修改$scope.tab1

使用任何非Angular代码修改您的数据都会使您的视图不同步,因为Angular不知道该更改(它没有做这项工作,所以ofc它不知道)

您可以通过使用Angular的
$interval
而不是setInterval来修复此问题,以重复更新。或者在
$scope.aat
中添加
$scope.apply()

在这种情况下,最好使用$interval$scope.apply()应该是最后的选择。

$scope.aat=function(){
                $http.get("http://localhost:8080/projet/getInspectionEnCoursDinspection")
    .success(function (data) {

     $scope.tab1=data;
     console.log("size="+ $scope.inspectionEnCoursDinspection1.length);
     //this--->$scope.apply();
   })   
} ,

//OR this-->$interval(function(){ $scope.aat() },60000);

60000ms是每分钟一次,而不是每6秒一次。尝试使用
$scope.apply
$scope.aat
告诉Angular注册对数组的更改。好的,谢谢你@Bergi,但这不是问题,视图不会更改,除非我刷新页面
$scope.aat=function(){$http.get("http://localhost:8080/projet/getInspectionEnCoursDinspectionsuccess(函数(数据){$scope.tab1=data;console.log(“size=“+$scope.inspectionEnCoursDinspection1.length);$scope.apply();})}
您应该尝试使用Angular的$interval,而不是plainJS的'SetInterval'。使用任何非Angular代码来转换Angular内容都会使您的视图不同步,除非您手动使用
$scope.apply()
$interval…我尝试只使用.apply()当没有角度的选择时。@Tyler同意了,只是让OP知道他或她的选择干杯。对.apply()的解释对于其他无法内置的情况很有用。