第一次运行后,角度服务“未定义”

时间:2013-04-25 19:03:31

标签: angularjs

所以我的readingController第一次在主体中调用getRomanization,然后又调用Romanize工厂服务(如下所示的控制器)。这一切都在第一次正常工作,但第二次在checkRomanization结束时调用getRomanization时,Romanize服务在Chrome中显示为undefined。 Romanize服务会怎样?为什么它只能成功运行一次?

请帮助我,因为我已经被困住了很长时间。

var readingController = function ($scope, Romanize){
    $scope.getRomanization = function(Romanize){
        $scope.currentMaterial = $scope.sections[$scope.sectionNumber].tutorials[$scope.tutorialNumber].material[$scope.questionNumber];
        Romanize.get($scope.currentMaterial).then(function(d){
            $scope.romanized = d;
        });

        $scope.$apply();
    };
    $scope.getRomanization(Romanize);
    $scope.$apply();
    $scope.checkRomanization = function(userRomanization){
        if ($scope.romanized === userRomanization){
            $scope.questionNumber++;
            $scope.getRomanization();
        };
    }
}

app.factory('Romanize', ['$http', 'Position', function($http, Position){
    return{
      get: function(query){
            var url= Position.sections[Position.sectionNumber].romanizeService + "?korean=" + query;
            var promise = $http.get(url).then(function(d) {
                var parts = $(d.data).find("span");
                var array = [];
                for (var x = 0; x<parts.length; x++){
                    array.push(parts[x].title);
                }
                var result = array.join("");
                return result;
            });
            return promise;
        }
    };
}]);

1 个答案:

答案 0 :(得分:2)

您对getRomanize的第二次调用缺少服务名称作为参数

$scope.checkRomanization = function(userRomanization){
    if ($scope.romanized === userRomanization){
        $scope.questionNumber++;
        $scope.getRomanization(Romanize);
    };
};