2016-02-27 54 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); 
});