angularjs - Angular : $interval undefined

标签 angularjs

我在尝试使用 $interval 时遇到错误。

Error: Uncaught ReferenceError: $interval is not defined

Plnkr 中的示例代码:plnkr

谁能帮帮我。谢谢!

var MyApp = angular.module('MyApp', []);

(function() {
  var MainController = function($scope, $http, $interval) {

    var OnSuccess = function(response) {
      $scope.user = response.data;
      $http.get($scope.user.repos_url).then(OnLoadRepos, OnError)
    };

    var OnLoadRepos = function(response) {
      $scope.repos = response.data;
    };
    var OnError = function(response) {
      $scope.user = "";
      $scope.error = "could not fetch the data.";
    };

    $scope.search = function(username) {
      $http.get("https://api.github.com/users/" + username).then(OnSuccess, OnError);
    };
    $scope.message = "GitHub Viewer!";
    $scope.username = "angular";
    $scope.countdown = 5;
    $scope.repoSortOrder = "-stargazers_count";
  };
  var decrementCountDown = function() {
    $scope.countdown -= 1;
    if ($scope.countdown < -1) {
      $scope.search($scope.username);
    }
  };
  MyApp.controller('MainController', MainController);

  var startCountdown = function() {
    $interval(decrementCountDown, 1000,$scope.countdown);
  };
  startCountdown();
}());

最佳答案

错误:

这里你的startCountdown函数在angular的 Controller 之外 所以它是简单的 javascript 函数。

在 Javascript 函数中,您正在使用 $interval 依赖项,因此它不会工作。

解决方案:

您在 Controller 中注入(inject)了 $interval 的另一件事,因此通过将您的 startCountdown 函数转移到 Controller 中的 Angular 函数中将起作用。

var MyApp = angular.module('MyApp', []);

(function() {
  var MainController = function($scope, $http, $interval) {

    var OnSuccess = function(response) {
      $scope.user = response.data;
      $http.get($scope.user.repos_url).then(OnLoadRepos, OnError)
    };

    var OnLoadRepos = function(response) {
      $scope.repos = response.data;
    };
    var OnError = function(response) {
      $scope.user = "";
      $scope.error = "could not fetch the data.";
    };

    $scope.search = function(username) {
      $http.get("https://api.github.com/users/" + username).then(OnSuccess, OnError);
    };
    $scope.message = "GitHub Viewer!";
    $scope.username = "angular";
    $scope.countdown = 5;
    $scope.repoSortOrder = "-stargazers_count";
  };
  var decrementCountDown = function() {
    $scope.countdown -= 1;
    if ($scope.countdown < -1) {
      $scope.search($scope.username);
    }

    $scope.startCountdown = function() {
        $interval(decrementCountDown, 1000,$scope.countdown);
     };
     $scope.startCountdown();
  };
  MyApp.controller('MainController', MainController);

}());

关于angularjs - Angular : $interval undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29788769/

相关文章:

node.js - 使用 MEAN 堆栈从服务器 Controller 获取 GET 请求

javascript - 如何重新调整我的指令以在两个不同的范围内工作?

css - ion-content 指令滚动 div 不显示数据

javascript - 在 Rails 4 中将数组(Javascript)放入 PostgreSQL

javascript - 剩余时间(倒计时)——Html、Javascript、AngularJS

javascript - 将模块隐藏在闭包中的原因是什么?

javascript - 如何避免 angularjs 选择中的空自动选项?

javascript - 如何使用 JavaScript 选择 <object> 标记内的 SVG 元素?

javascript - AngularJS错误: $injector:modulerr after being minified

javascript - Angular 'PersonCtrl' 不是函数,未定义