2017-10-07 78 views
0

所以我一直在使用angularjs和symfony的應用程序工作。我試圖每5000毫秒檢索一次重複的數據,所以我使用「$超時」功能從服務器獲取實時數據。

這裏是我的控制器代碼:

.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); 
    }); 
    }; 



... 

}]) 

這裏的VUE代碼:

<table class="table table-striped table-bordered" id="editable-datatable"> 
          <thead> 
           <tr> 
            <th>Username</th> 
            <th>Email</th> 
            <th>tel</th> 
            <th>Actions</th> 

           </tr> 
          </thead> 
          <tbody> 
           <tr ng-repeat="client in clients" id="1" class="gradeX"> 
            <td>{{client.username}}</td> 
            <td>{{client.email}}</td> 
            <td>{{client.tel}}</td> 

            <td collapse=3> 

               <a style="border: 1px solid rgba(10, 6, 6, 0.25); padding: 4px;" ng-href="#!/client/{{client.id}}" ng-click="ClientDetailsController()"> 
                <i class="icon-eye-open"></i> Details 
     </a> &nbsp;&nbsp; 



<span style="margin-left: 10px"><a data-toggle="modal" href data 
target="#exampleModal" ng-click="setID(client.id)" > 
         <i class="icon-remove-sign"></i> Delete 
                </a></span> 

             </td> 


           </tr> 


          </tbody> 

         </table> 

我的問題是,每當我去掉 「retrieveItems」 功能一切正常就好了。我得到所有的客戶端,但是何時添加超時服務,所以我可以每隔5秒刷新註冊的客戶端...客戶端不會加載vue,但在錯誤部分沒有錯誤。有人請啓發我究竟是什麼問題可能..任何其他建議,使實時檢索功能。提前致謝 。

+1

我認爲你必須添加$範圍。$適用()。 –

+0

嗨!非常感謝您的答覆。請您告訴我我到底要把它放在哪裏? – Amy

+0

你的代碼看起來不錯,也許你總是得到相同的數據 –

回答

2

要獲得每5000毫秒的數據,你應該使用

$間隔服務$interval

0

首先,我認爲你需要使用$間隔重複調用的。 其次,你必須在純函數不能指定範圍內的值的角度範圍,想

var retrieveItems = function() { ... } 

嘗試使用,

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

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