$ Timeout服务,数据刷新无法正常工作(Angularjs)

时间:2017-10-07 05:25:05

标签: javascript angularjs

所以我一直在使用angularjs和symfony开发应用程序。我试图每5000毫秒重复检索一次数据,所以我采用了" $ timeout"功能,以从服务器获取实时数据。

这是我的控制器代码:

<?php

    session_start();
    if (isset($_POST['eventsubmit'])) {
        $eventname = $_POST['eventname'];
        $venue = $_POST['venue'];
        $date = $_POST['date'];
        $name = $_POST['name'];

        $eventname = mysqli_real_escape_string($conn, $_POST['eventname']);
        $venue = mysqli_real_escape_string($conn, $_POST['venue']); 
        $date = mysqli_real_escape_string($conn, $_POST['date']); 
        $name = mysqli_real_escape_string($conn, $_POST['name']);   


            $sql = "UPDATE events SET eventname='$eventname' WHERE userid='2' ";
            mysqli_query($conn, $sql);
            header("Location: ../members.php?event=success");
            exit();



    } else {
        header("Location: ../signup.php");
        exit();
    }

}

这是vue代码:

.controller('clientController', [ '$rootScope','$scope', 'Api' , 'toastr',   
'$window', '$routeParams', '$filter'  , '$timeout',
 function($rootScope,$scope, Api  ,toastr, $window, $routeParams, $filter , 
 $timeout) {

     $rootScope.myVar=true;


 $scope.clients = [];
 var  retrieveItems = function () {

 Api.getAllClients()
  .then(function (result) {
    console.log('result', result);
    $scope.clients = result.data;
    $timeout(retrieveItems, 5000);
  }, function (error) {
    console.log('error', error);
  });
  };



 ...

}])

我的问题是每当我删除&#34; retrieveItems&#34;功能一切正常。我得到了所有的客户端但是什么时候添加超时服务,所以我可以每隔5秒刷新注册的客户端...客户端不会加载vue但错误部分没有错误。有人可以告诉我究竟是什么问题可能..其他任何建议,使实时检索功能。提前致谢 。

2 个答案:

答案 0 :(得分:2)

要每5000毫秒获取一次数据,您应该使用

  

$ interval service $interval

答案 1 :(得分:0)

首先,我认为您需要使用$ interval进行重复调用。 其次,您必须在角度范围内分配范围值,而不是像

这样的纯函数
 var  retrieveItems = function () { ... }

尝试使用,

 $scope.retrieveItems = function () {...}

I think this wont be asking to $scope.apply()