如何在第一次调用后连续(每 5 秒)运行 Angular JS 控制器



这是我的角度js文件(app.js)当我调用控制器(uuidCtrl)时,它将触发uuidCtrl控制器.当我想调用控制器2次时,我必须加载页面2次。但是我想在第一次调用后连续运行它。希望您对此有一些解决方案。

var app = angular.module('myApp', ['onsen']);
app.service('iBeaconService', function () {
    this.currentBeaconUuid = null;
    this.onDetectCallback = function () {
    };
    this.beacons = {
        "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx": {
            icon: 'img/1.jpg',
            rssi: -200,
            proximity: PROX_UNKNOWN,
            name: 'Beacon',
            number: '1',
            id: '000265C9'
        }
    };
    createBeacons = function () {
        //some code
    };
    this.watchBeacons = function (callback) {
        ///some code
    };
});
app.controller('uuidCtrl', ['$scope', 'iBeaconService', function ($scope, iBeaconService) {
    $scope.beacons = iBeaconService.beacons;
    var callback = function (deviceData, uuid) {
        iBeaconService.watchBeacons(callback);
    }
}]);

这个js应该在应用程序中循环扫描附近的信标

这是我调用控制器的地方

<ons-page id="page2" ng-app="myApp" ng-controller="uuidCtrl">

您可以使用$interval

app.controller('uuidCtrl', ['$scope', '$interval', 'iBeaconService', function ($scope, $interval, iBeaconService) {
  ...
  $interval(function() {
    // do whatever you want to execute every 5 sec
  }, 5000) // 5000 ms execution
  ...

另外, 您可能希望调用 watchBeacons, 并传递回调, 不像您现在所做的那样,您只需定义一个函数

$scope.beacons = iBeaconService.beacons;
iBeaconService.watchBeacons(function (deviceData, uuid) {
  // do whatever
});

希望这有帮助。

最新更新