2016-02-27 108 views
0

我寫了下面的控制器,在我的應用程序會從我的數據庫並顯示信息中:角,運行區間功能,超時

控制器:

.controller('activityCtrl', function($scope, $http, $interval) { 
    $http.get("user.php") 
    .then(function (response) {$scope.names = response.data.records;}); 
}) 

user.php的

​​

現在我試圖修改控制器,以便它運行getData函數並以預定義的時間間隔更新視圖,並且Im有一些麻煩,將更新的必要部分與已有的工作。這裏是控制器,因爲它已被修改:

.controller('activityCtrl', function($scope, $http, $timeout) { 
$scope.getData = function(){ 
$http.get("user.php") 
.success(function(data,status,headers,config){ 
//The next line needs to be modified to work with the new code 
//.then(function (response) {$scope.names = response.data.records;}); 
console.log("data fetched"); 
     }); 
    }; 
$scope.intervalFunction = function(){ 
    $timeout(function(){ 
     $scope.getData(); 
     $scope.intervalFunction(); 
    }, 1000) 
}; 
$scope.intervalFunction(); 
}); 

目前我有console.log運行測試,一切都是功能。我把我的舊代碼註釋掉了;這是我需要重寫的行,以便根據需要顯示數據。很感謝任何形式的幫助。

間隔已經工作;我不知道如何重寫.success函數,以便顯示$ http的結果。

+0

不要嘗試創建JSON手動...它是非常耗時且容易出錯,並且可以簡單地使用'json_encode($陣列)來完成' – charlietfl

+0

'成功'開火嗎?你看到'data fetched'消息嗎?真的不清楚具體問題是什麼 – charlietfl

+0

是的,console.log根據需要進行報告。 – DataGuy

回答

0

對不起,你的問題對我來說還不清楚,就像你想要達到的目標一樣。

如果您想在特定時間段後重復運行您的代碼,那麼您可以使用$ interval服務。你能更清楚你想要達到什麼目標,問題在哪裏?

+0

Ive編輯後 - 我需要更新我的一行代碼,以便與新代碼的其餘部分一起工作 – DataGuy

0

使用$interval而不是$timeout

$interval(function(){ 
     $scope.getData(); 
    }, 1000); 

查看更多:setTimeout or setInterval?

+0

間隔正在工作;我不知道如何重寫。成功功能,因此它顯示$ http的結果。 – DataGuy

+0

我認爲同樣的成功功能應該可以工作。如果您想將新結果追加到舊結果中,請在標記中使用' .push()'和'ng-repeat'。 –

+0

它不工作,這就是爲什麼我發佈了這個問題。如果我評論.success和取消註釋,然後整個腳本停止工作 – DataGuy

0

雖然技術上不是一個答案你這是在user.php的在做什麼? 我想你想創建一個JSON字符串,但我質疑你的方法。

<?php 
    while($row = $result->fetch_array(MYSQLI_ASSOC)) { 
    $data[] = $row; // or just use a fetch_all? 
    } 

    echo json_encode($data); 
?> 
+0

這就是我在做什麼 – DataGuy

0

我用$範圍和setInterval,而不是固定的問題。這是在任何情況下,新的控制器需要一個參考:

.controller('activityCtrl', function($scope, $http) { 
    $scope.value = 0; 
    setInterval(function(){ 
    $http.get("user.php") 
    .then(function (response) {$scope.names = response.data.records;}); 
    }, 1000); 
});