Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 使用角度传感器重新加载_Javascript_Angularjs_Angularjs Scope_Angularjs Ng Repeat - Fatal编程技术网

Javascript 使用角度传感器重新加载

Javascript 使用角度传感器重新加载,javascript,angularjs,angularjs-scope,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Scope,Angularjs Ng Repeat,来自SO的朋友们好 我是angular的新手,我试图用PHP Web服务提供的信息来保持表始终更新 我第一次要求提供以下信息: HTML <div class="block" ng-controller="demandar_informacion" ng-init="visualizacion_masiva()"> <h1 class="block_header">Welcome admin</h1>

来自SO的朋友们好

我是angular的新手,我试图用PHP Web服务提供的信息来保持表始终更新

我第一次要求提供以下信息:

HTML

<div class="block" ng-controller="demandar_informacion" ng-init="visualizacion_masiva()">
                    <h1 class="block_header">Welcome admin</h1>
                    <p class="block_info"></p>
                    <table>
                        <thead>
                            <tr>
                                <th ng-repeat="header in headers ">{{header}}</th>
                            </tr>
                        </thead>
                        <tr ng-repeat="disponible in disponibles">
                            <td ng-repeat="(variable, valor) in disponible">{{valor}}</td>
                        </tr>
                    </table>
                </div>
主要问题:

function demandar_informacion($scope, $http) {

        //pedido de visualización masiva
        $scope.visualizacion_masiva = function() {

            var address = "http://127.0.0.1/usa/_code/index_records.php"
            + "?ac=view_all"

            var pedido = $http({
                method: 'GET',
                url: address
            })

            .success(function(data, status) {
                $scope.errors = data.error;
                $scope.headers = data.headers;
                $scope.disponibles = data.disponibles;
                $scope.eliminados = data.eliminados;
                $scope.info = data.info;
            });

        };

}
是否有任何方法可以每隔3秒或5秒重新发送HTTP数据包并更新信息?因为它正在迅速变化

辅助:

function demandar_informacion($scope, $http) {

        //pedido de visualización masiva
        $scope.visualizacion_masiva = function() {

            var address = "http://127.0.0.1/usa/_code/index_records.php"
            + "?ac=view_all"

            var pedido = $http({
                method: 'GET',
                url: address
            })

            .success(function(data, status) {
                $scope.errors = data.error;
                $scope.headers = data.headers;
                $scope.disponibles = data.disponibles;
                $scope.eliminados = data.eliminados;
                $scope.info = data.info;
            });

        };

}
同时,这段代码似乎正在改变我在数组中的值的顺序,或者它以前可能在角度代码中的某个地方被改变。我已经检查了PHP和Json字符串似乎处于正确的状态,但是当涉及到打印值时,它完全失去了它的本机顺序(以不正确/未知的顺序显示元素)。。。有人有线索吗

<tr ng-repeat="disponible in disponibles">
                            <td ng-repeat="(variable, valor) in disponible">{{valor}}</td>
                        </tr>

{{valor}}
提前感谢!
Chris C.Russo

您可以使用$timeout服务每隔几秒钟调用一次服务器。或者使用websockets将更改从服务器推送到Angular应用程序(使用Ratchet,可能是())

更新 古老的 最简单的方法是:

$interval(function() {
  demandar_informacion();
}, 5000);
buuuuutttt正如MichaL在评论中指出的那样,由于完成请求所需的时间,5秒将被消耗殆尽,因为它将变成5、4、3、2、1

其他途径:

  • 使用firebase等待并调用加载函数
  • 长轮询您的php脚本

使用$interval可能很危险-最好使用链式$timeout调用(如果demandar_informacion执行时间超过5秒,那么我们就有麻烦了)。请看@MichałDudak,这是一个很好的观点,递归函数会更好。一公斤谢谢!