控制器未在AngularJS中触发

时间:2013-09-11 20:59:12

标签: javascript angularjs

我在AngularJS中遇到一个奇怪的问题,那里的MainCtrl根本不是火。我转到localhost/并重定向到localhost/#/但该页面为空白。控制台中没有错误/消息。我可以确认/views/main.html是公开可访问的。我不知道为什么这不起作用。我错过了什么吗?

angular.module('TurkApp', ['ngCookies']).config([
  '$routeProvider',
  function ($routeProvider) {
    $routeProvider.when('/', {
      templateUrl: '/views/main.html',
      controller: 'MainCtrl'
    }).otherwise({ redirectTo: '/' });
  }
]);
  angular.module('TurkApp', []).controller('MainCtrl', [
    '$scope',
    '$http',
    '$location',
    '$cookies',
    function ($scope, $http, $location, $cookies) {
      $scope.questionIsLoading = true;
      $scope.answerButtonsDisabled = true;
      $scope.showHelp = false;
      $scope.currentRetries = 0;
      $scope.acceptedHit;
      $scope.currentQuestionText = null;
      $scope.currentQuestionID = null;
      var AssignmentID, Interest;
      var getInterest = function () {
        return $cookies.interest;
      };
      var getAssignmentID = function () {
        var qsRegex = new RegExp('(?:\\?|&)AssignmentID=(.*?)(?=&|$)', 'gi'), m, assignmentID = false;
        while ((match = qsRegex.exec(document.location.search)) != null) {
          assignmentID = match[1];
        }
        if (!assignmentID) {
          assignmentID = $location.search()['AssignmentID'];
        }
        $scope.acceptedHit = assignmentID == 'ASSIGNMENT_ID_NOT_AVAILABLE' || !assignmentID ? false : true;
        return assignmentID;
      };
      $scope.loadNextQuestion = function () {
        $scope.questionIsLoading = $scope.answerButtonsDisabled = true;
        $http.get('/workers/' + Interest + '/next-question').success(function (data, status) {
          $scope.currentQuestionText = data.text;
          $scope.currentQuestionID = data.id;
          $scope.questionIsLoading = $scope.answerButtonsDisabled = false;
        }).error(function () {
          console.log('Answer send failed');
        });
      };
      $scope.sendAnswer = function (answer) {
        if (!$scope.questionIsLoading && !$scope.answerButtonsDisabled) {
          $scope.questionIsLoading = $scope.answerButtonsDisabled = true;
          $http.post('/workers/' + Interest + '/answer-question', {
            question_id: $scope.currentQuestionID,
            question_text: $scope.currentQuestionText,
            answer: answer
          }).success(function (data, status) {
            $scope.loadNextQuestion();
          }).error(function () {
            console.log('Answer send failed');
          });
        }
      };
      $scope.toggleHelp = function () {
        $scope.showHelp = $scope.showHelp ? false : true;
      };
      var init = function () {
        AssignmentID = getAssignmentID();
        Interest = getInterest();
        $scope.loadNextQuestion();
      };
      init();
    }
  ]);

1 个答案:

答案 0 :(得分:4)

您正在创建模块'TurkApp'两次,从而丢失了在第一个模块中注册的配置:

angular.module('TurkApp', ['ngCookies'])

当您将第二个参数包含到angular.module函数中时,它会创建模块。如果省略第二个参数,它会假定模块存在并“扩展”它。

变化:

angular.module('TurkApp', [])

为:

angular.module('TurkApp')

请参阅此处的使用部分 - http://docs.angularjs.org/api/angular.module