0

したがって、私の readingController は最初に本体で getRomanization を呼び出し、次に Romanize ファクトリ サービス (コントローラーの下に表示) を呼び出します。これは最初はすべて正常に機能しますが、2 回目は checkRomanization の最後に getRomanization が呼び出されたときundefinedに Chrome のように Romanize サービスが起動します。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;
        }
    };
}]);
4

1 に答える 1

2

getRomanize への 2 回目の呼び出しで、引数としてサービス名が欠落しています

$scope.checkRomanization = function(userRomanization){
    if ($scope.romanized === userRomanization){
        $scope.questionNumber++;
        $scope.getRomanization(Romanize);
    };
};
于 2013-04-25T19:09:07.920 に答える