Javascript AngularJS控制器在后端数据更改时自动更新$scope

Javascript AngularJS控制器在后端数据更改时自动更新$scope,javascript,json,angularjs,api,rest,Javascript,Json,Angularjs,Api,Rest,我有一个服务,它使用$http从RESTAPI“获取”一些JSON数据。控制器使用该服务获取该数据,并在$scope中对其进行初始化。如何使每次JSON API更改时,该更改都在$scope中更新,从而更新视图 控制器: app.controller('MainController', function ($scope, BuildService) { init(); function init() { BuildService.getBuilds().then(

我有一个服务,它使用$http从RESTAPI“获取”一些JSON数据。控制器使用该服务获取该数据,并在$scope中对其进行初始化。如何使每次JSON API更改时,该更改都在$scope中更新,从而更新视图

控制器:

app.controller('MainController', function ($scope, BuildService) {
    init();
    function init() {
        BuildService.getBuilds().then(function() {
            $scope.builds = BuildService.data();
        });
    }
});
服务:

app.service('BuildService', function ($http, $q) {

    var BuildService = {}; 

    var deffered = $q.defer();
    var data = [];  

    BuildService.getBuilds = function () {
        //return builds;

        $http.get('/api').
          success(function(d, status, headers, config) {
            // this callback will be called asynchronously
            // when the response is available
            data = d;
            deffered.resolve();

          }).
          error(function(d, status, headers, config) {
            // called asynchronously if an error occurs
            // or server returns response with an error status.
            deffered.reject();
          });

          return deffered.promise;

    };

    BuildService.data = function() { return data; };

    return BuildService;

});

我得说你真的有太多不必要的逻辑。保持简单,就这样做吧。如果要重用GET,可以使用
getBuilds
controller方法

app.controller('MainController', function ($scope, $http, BuildService) {
    init();
    function init() {
        $http.get('/api').
            success(function(data) {
                $scope.builds = data;
            });
    }
});

我得说你真的有太多不必要的逻辑。保持简单,就这样做吧。如果要重用GET,可以使用
getBuilds
controller方法

app.controller('MainController', function ($scope, $http, BuildService) {
    init();
    function init() {
        $http.get('/api').
            success(function(data) {
                $scope.builds = data;
            });
    }
});

我得说你真的有太多不必要的逻辑。保持简单,就这样做吧。如果要重用GET,可以使用
getBuilds
controller方法

app.controller('MainController', function ($scope, $http, BuildService) {
    init();
    function init() {
        $http.get('/api').
            success(function(data) {
                $scope.builds = data;
            });
    }
});

我得说你真的有太多不必要的逻辑。保持简单,就这样做吧。如果要重用GET,可以使用
getBuilds
controller方法

app.controller('MainController', function ($scope, $http, BuildService) {
    init();
    function init() {
        $http.get('/api').
            success(function(data) {
                $scope.builds = data;
            });
    }
});

这个问题并不具体。你想要实现的是一个实时应用程序

方法1:轮询 使用
$interval
每隔30秒左右检查一次JSON API

方法2:基于WebSocket的通知
如果您可以控制JSON API,则可以创建另一个基于WebSocket的通知API。每当JSON API发生变化时,通知客户端再次获取JSON API。

这个问题不是特定于AngularJS的。你想要实现的是一个实时应用程序

方法1:轮询 使用
$interval
每隔30秒左右检查一次JSON API

方法2:基于WebSocket的通知
如果您可以控制JSON API,则可以创建另一个基于WebSocket的通知API。每当JSON API发生变化时,通知客户端再次获取JSON API。

这个问题不是特定于AngularJS的。你想要实现的是一个实时应用程序

方法1:轮询 使用
$interval
每隔30秒左右检查一次JSON API

方法2:基于WebSocket的通知
如果您可以控制JSON API,则可以创建另一个基于WebSocket的通知API。每当JSON API发生变化时,通知客户端再次获取JSON API。

这个问题不是特定于AngularJS的。你想要实现的是一个实时应用程序

方法1:轮询 使用
$interval
每隔30秒左右检查一次JSON API

方法2:基于WebSocket的通知
如果您可以控制JSON API,则可以创建另一个基于WebSocket的通知API。每当JSON API发生变化时,通知客户端再次获取JSON API。

好的,谢谢,这样更好。但是,如果数据发生更改,我如何使其自动更新为$scope?只有在您发出请求时,您的数据才会更改。如果你想检查你的构建,你有两个选择。您可以实现轮询,这意味着您每
x
秒执行与
init
-函数相同的
GET
。或者您可以查看一下,它使您的页面和服务器之间具有双工连接,使您能够收听服务器发出的
updatenow
消息。好的,谢谢,这样更好。但是,如果数据发生更改,我如何使其自动更新为$scope?只有在您发出请求时,您的数据才会更改。如果你想检查你的构建,你有两个选择。您可以实现轮询,这意味着您每
x
秒执行与
init
-函数相同的
GET
。或者您可以查看一下,它使您的页面和服务器之间具有双工连接,使您能够收听服务器发出的
updatenow
消息。好的,谢谢,这样更好。但是,如果数据发生更改,我如何使其自动更新为$scope?只有在您发出请求时,您的数据才会更改。如果你想检查你的构建,你有两个选择。您可以实现轮询,这意味着您每
x
秒执行与
init
-函数相同的
GET
。或者您可以查看一下,它使您的页面和服务器之间具有双工连接,使您能够收听服务器发出的
updatenow
消息。好的,谢谢,这样更好。但是,如果数据发生更改,我如何使其自动更新为$scope?只有在您发出请求时,您的数据才会更改。如果你想检查你的构建,你有两个选择。您可以实现轮询,这意味着您每
x
秒执行与
init
-函数相同的
GET
。或者您可以查看一下,这使您能够在页面和服务器之间建立双工连接,使您能够侦听来自服务器的
updatenow
消息。